[INFO] fetching crate wickra-exchange-core 0.1.8...
[INFO] testing wickra-exchange-core-0.1.8 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate wickra-exchange-core 0.1.8 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate wickra-exchange-core 0.1.8
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate wickra-exchange-core 0.1.8
[INFO] tweaked toml for crates.io crate wickra-exchange-core 0.1.8 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate wickra-exchange-core 0.1.8 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate wickra-exchange-core 0.1.8 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a
[INFO] running `Command { std: "docker" "start" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling cmov v0.5.4
[INFO] [stderr]    Compiling cfg-if v1.0.5
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling cpubits v0.1.1
[INFO] [stderr]    Compiling ctutils v0.4.2
[INFO] [stderr]    Compiling ff v0.14.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling syn v3.0.6
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.21
[INFO] [stderr]    Compiling pem-rfc7468 v1.0.0
[INFO] [stderr]    Compiling group v0.14.0
[INFO] [stderr]    Compiling base16ct v1.0.0
[INFO] [stderr]    Compiling crossbeam-deque v0.8.8
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling either v1.18.0
[INFO] [stderr]    Compiling cpufeatures v0.3.1
[INFO] [stderr]    Compiling rust_decimal v1.43.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling wickra-core v1.0.6
[INFO] [stderr]    Compiling zeroize_derive v1.5.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling hybrid-array v0.4.15
[INFO] [stderr]    Compiling der v0.8.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling crypto-bigint v0.7.5
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling hmac v0.13.0
[INFO] [stderr]    Compiling signature v3.0.0
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling spki v0.8.0
[INFO] [stderr]    Compiling sec1 v0.8.1
[INFO] [stderr]    Compiling pkcs8 v0.11.0
[INFO] [stderr]    Compiling primefield v0.14.0
[INFO] [stderr]    Compiling elliptic-curve v0.14.1
[INFO] [stderr]    Compiling rfc6979 v0.6.0
[INFO] [stderr]    Compiling wnaf v0.14.1
[INFO] [stderr]    Compiling primeorder v0.14.0
[INFO] [stderr]    Compiling ecdsa v0.17.0
[INFO] [stderr]    Compiling p256 v0.14.0
[INFO] [stderr]    Compiling wickra-exchange-core v0.1.8 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 59.14s
[INFO] running `Command { std: "docker" "inspect" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling zerocopy v0.8.57
[INFO] [stderr]    Compiling rustix v1.1.5
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling bitflags v2.13.2
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rust_decimal_macros v1.40.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rust_decimal v1.43.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling crypto-bigint v0.7.5
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.5
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling hmac v0.13.0
[INFO] [stderr]    Compiling signature v3.0.0
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling primefield v0.14.0
[INFO] [stderr]    Compiling elliptic-curve v0.14.1
[INFO] [stderr]    Compiling rfc6979 v0.6.0
[INFO] [stderr]    Compiling wnaf v0.14.1
[INFO] [stderr]    Compiling ecdsa v0.17.0
[INFO] [stderr]    Compiling primeorder v0.14.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling p256 v0.14.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling wickra-exchange-core v0.1.8 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 08s
[INFO] running `Command { std: "docker" "inspect" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.20s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/wickra-exchange-core/c3e1a7e2c3dabc27/out/wickra_exchange_core-c3e1a7e2c3dabc27)
[INFO] [stdout] 
[INFO] [stdout] running 669 tests
[INFO] [stdout] test clock::tests::nonce_is_strictly_increasing_even_within_a_millisecond ... ok
[INFO] [stdout] test deadman::tests::a_fresh_heartbeat_extends_the_deadline ... ok
[INFO] [stdout] test clock::tests::server_clock_offsets_both_directions ... ok
[INFO] [stdout] test credentials::tests::validate_rejects_empty_key_or_secret ... ok
[INFO] [stdout] test clock::tests::token_ttl_expiry ... ok
[INFO] [stdout] test error::tests::code_is_exposed_only_for_venue_errors ... ok
[INFO] [stdout] test deadman::tests::disarm_clears_the_deadline ... ok
[INFO] [stdout] test error::tests::display_renders_each_variant ... ok
[INFO] [stdout] test error::tests::retryable_classification ... ok
[INFO] [stdout] test clock::tests::nonce_starts_above_seed ... ok
[INFO] [stdout] test credentials::tests::builder_attaches_optional_fields ... ok
[INFO] [stdout] test events::tests::book_best_levels_mid_and_spread ... ok
[INFO] [stdout] test events::tests::empty_sides_yield_no_mid_or_spread ... ok
[INFO] [stdout] test events::tests::lifecycle_events_round_trip ... ok
[INFO] [stdout] test exchanges::binance::tests::a_forced_order_is_a_liquidation_on_the_side_hitting_the_book ... ok
[INFO] [stdout] test credentials::tests::debug_never_leaks_secret_material ... ok
[INFO] [stdout] test exchanges::binance::tests::a_frame_that_is_not_a_derivatives_print_yields_nothing ... ok
[INFO] [stdout] test error::tests::with_retry_after_does_not_overwrite_what_the_venue_already_said ... ok
[INFO] [stdout] test error::tests::with_retry_after_fills_an_empty_rate_limit ... ok
[INFO] [stdout] test error::tests::with_retry_after_leaves_every_other_variant_alone ... ok
[INFO] [stdout] test exchanges::binance::tests::a_spot_client_refuses_the_derivatives_channels ... ok
[INFO] [stdout] test exchanges::binance::tests::a_spot_order_refuses_reduce_only ... ok
[INFO] [stdout] test exchanges::binance::tests::book_and_ticker_subscriptions_reuse_one_connection ... ok
[INFO] [stdout] test deadman::tests::heartbeat_arms_and_sets_the_deadline ... ok
[INFO] [stdout] test exchanges::binance::tests::cancel_batch_futures_is_one_call ... ok
[INFO] [stdout] test deadman::tests::starts_disarmed_and_never_expires ... ok
[INFO] [stdout] test events::tests::event_is_tagged_in_json ... ok
[INFO] [stdout] test exchanges::binance::tests::cancel_batch_spot_is_sequential ... ok
[INFO] [stdout] test exchanges::binance::tests::cancel_order_is_a_signed_delete ... ok
[INFO] [stdout] test exchanges::binance::tests::cancel_order_ws_sends_cancel_method ... ok
[INFO] [stdout] test exchanges::binance::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::binance::tests::derivatives_positions_parse_and_skip_flat ... ok
[INFO] [stdout] test exchanges::binance::tests::derivatives_close_position_places_reduce_only_market ... ok
[INFO] [stdout] test exchanges::binance::tests::derivatives_set_leverage_and_margin_mode ... ok
[INFO] [stdout] test exchanges::binance::tests::dropped_user_data_stream_reconnects_with_a_fresh_listen_key ... ok
[INFO] [stdout] test exchanges::binance::tests::error_taxonomy_mapping ... ok
[INFO] [stdout] test exchanges::binance::tests::futures_place_order_uses_fapi_order_path ... ok
[INFO] [stdout] test exchanges::binance::tests::futures_ticker_combines_stats_and_book ... ok
[INFO] [stdout] test exchanges::binance::tests::futures_balances_use_fapi_v2_balance ... ok
[INFO] [stdout] test exchanges::binance::tests::keepalive_user_data_refreshes_the_listen_key ... ok
[INFO] [stdout] test exchanges::binance::tests::hedge_mode_names_the_side_and_drops_reduce_only ... ok
[INFO] [stdout] test exchanges::binance::tests::hedge_mode_reaches_the_batch_and_websocket_paths ... ok
[INFO] [stdout] test exchanges::binance::tests::klines_parse_into_candles ... ok
[INFO] [stdout] test exchanges::binance::tests::invalid_symbol_error_is_mapped ... ok
[INFO] [stdout] test exchanges::binance::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::binance::tests::load_instruments_populates_filters ... ok
[INFO] [stdout] test exchanges::binance::tests::order_book_parses_levels ... ok
[INFO] [stdout] test exchanges::binance::tests::amend_futures_puts_in_place ... ok
[INFO] [stdout] test exchanges::binance::tests::peer_close_triggers_reconnect_and_resubscribe ... ok
[INFO] [stdout] test exchanges::binance::tests::amend_spot_uses_cancel_replace ... ok
[INFO] [stdout] test exchanges::binance::tests::place_batch_futures_is_one_call_with_per_order_results ... ok
[INFO] [stdout] test exchanges::binance::tests::balances_parse ... ok
[INFO] [stdout] test exchanges::binance::tests::place_batch_spot_is_sequential ... ok
[INFO] [stdout] test exchanges::binance::tests::place_oco_spot_returns_both_legs ... ok
[INFO] [stdout] test exchanges::binance::tests::place_oco_futures_is_unsupported ... ok
[INFO] [stdout] test exchanges::binance::tests::non_json_error_body_falls_back_to_exchange ... ok
[INFO] [stdout] test exchanges::binance::tests::one_mark_price_frame_answers_only_the_channels_subscribed ... ok
[INFO] [stdout] test exchanges::binance::tests::one_way_futures_and_spot_are_unchanged ... ok
[INFO] [stdout] test exchanges::binance::tests::place_order_ws_signs_and_parses ... ok
[INFO] [stdout] test exchanges::binance::tests::post_only_limit_becomes_limit_maker_without_tif ... ok
[INFO] [stdout] test exchanges::binance::tests::place_order_skips_filter_check_without_instruments ... ok
[INFO] [stdout] test exchanges::binance::tests::query_order_computes_average_fill_price ... ok
[INFO] [stdout] test exchanges::binance::tests::poll_without_connection_is_empty ... ok
[INFO] [stdout] test exchanges::binance::tests::place_order_signs_request_and_parses_response ... ok
[INFO] [stdout] test exchanges::binance::tests::place_order_ws_surfaces_rejection ... ok
[INFO] [stdout] test exchanges::binance::tests::open_orders_filtered_and_unfiltered ... ok
[INFO] [stdout] test exchanges::binance::tests::place_order_rejects_filter_violation_when_loaded ... ok
[INFO] [stdout] test exchanges::binance::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::binance::tests::rest_base_urls_by_market_and_network ... ok
[INFO] [stdout] test exchanges::binance::tests::split_wire_symbol_uses_known_quotes ... ok
[INFO] [stdout] test exchanges::binance::tests::subscribe_sends_frame_and_poll_returns_events ... ok
[INFO] [stdout] test exchanges::binance::tests::subscribe_without_ws_transport_errors ... ok
[INFO] [stdout] test exchanges::binance::tests::sync_time_shifts_signed_timestamps ... ok
[INFO] [stdout] test exchanges::binance::tests::short_kline_row_is_rejected ... ok
[INFO] [stdout] test exchanges::binance::tests::signed_endpoint_without_credentials_errors ... ok
[INFO] [stdout] test exchanges::binance::tests::stp_mode_appends_param ... ok
[INFO] [stdout] test exchanges::binance::tests::the_polled_figures_are_read_over_rest ... ok
[INFO] [stdout] test exchanges::binance::tests::the_subscription_names_the_stream_binance_publishes ... ok
[INFO] [stdout] test exchanges::binance::tests::stp_none_omits_param ... ok
[INFO] [stdout] test exchanges::binance::tests::subscribe_user_data_futures_parses_order_and_account_updates ... ok
[INFO] [stdout] test exchanges::binance::tests::the_trigger_price_reaches_all_three_order_paths ... ok
[INFO] [stdout] test exchanges::binance::tests::ticker_parses_and_targets_the_right_url ... ok
[INFO] [stdout] test exchanges::binance::tests::unsynced_clock_signs_with_local_time ... ok
[INFO] [stdout] test exchanges::binance::tests::wire_symbol_concatenates ... ok
[INFO] [stdout] test exchanges::binance::tests::ws_combined_stream_wrapper_is_unwrapped ... ok
[INFO] [stdout] test exchanges::binance::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::binance::tests::ws_non_event_frames_are_ignored ... ok
[INFO] [stdout] test exchanges::binance::tests::ws_order_requires_a_ws_transport ... ok
[INFO] [stdout] test exchanges::binance::tests::ws_ticker_frame_maps_to_ticker ... ok
[INFO] [stdout] test exchanges::bitget::tests::a_bitget_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::binance::tests::ws_trade_frame_maps_aggressor ... ok
[INFO] [stdout] test exchanges::binance::tests::subscribe_user_data_requires_credentials ... ok
[INFO] [stdout] test exchanges::bitget::tests::a_blocked_reply_is_reported_as_the_block_not_as_drift ... ok
[INFO] [stdout] test exchanges::binance::tests::subscribe_user_data_spot_streams_orders_and_balances ... ok
[INFO] [stdout] test exchanges::binance::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::bitget::tests::a_spot_client_still_subscribes_to_spot_streams ... ok
[INFO] [stdout] test exchanges::binance::tests::the_websocket_frame_carries_the_stp_policy ... ok
[INFO] [stdout] test exchanges::bitget::tests::a_spot_client_refuses_the_derivatives_surface ... ok
[INFO] [stdout] test exchanges::bitget::tests::amend_and_oco_are_unsupported ... ok
[INFO] [stdout] test exchanges::bitget::tests::a_spot_trigger_goes_to_the_plan_endpoint_and_watches_the_traded_price ... ok
[INFO] [stdout] test exchanges::bitget::tests::a_futures_trigger_watches_the_mark_and_names_its_plan_type ... ok
[INFO] [stdout] test exchanges::bitget::tests::an_unsubscribed_derivatives_print_is_not_emitted ... ok
[INFO] [stdout] test exchanges::bitget::tests::batch_client_ids_do_not_repeat_across_batches ... ok
[INFO] [stdout] test exchanges::bitget::tests::cancel_batch_is_one_call ... ok
[INFO] [stdout] test exchanges::bitget::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::bitget::tests::derivatives_close_position_reduce_only ... ok
[INFO] [stdout] test exchanges::bitget::tests::dropped_user_data_stream_reconnects_with_a_fresh_login ... ok
[INFO] [stdout] test exchanges::binance::tests::ws_depth_update_maps_to_book_delta ... ok
[INFO] [stdout] test exchanges::bitget::tests::futures_cancel_and_open_orders_use_mix_endpoints ... ok
[INFO] [stdout] test exchanges::bitget::tests::derivatives_positions_parse ... ok
[INFO] [stdout] test exchanges::binance::tests::ws_malformed_frame_errors ... ok
[INFO] [stdout] test exchanges::bitget::tests::a_futures_client_subscribes_to_futures_streams_not_spot ... ok
[INFO] [stdout] test exchanges::bitget::tests::futures_place_order_uses_mix_path ... ok
[INFO] [stdout] test exchanges::bitget::tests::hedge_mode_sends_trade_side_instead_of_reduce_only ... ok
[INFO] [stdout] test exchanges::bitget::tests::configured_margin_mode_reaches_every_futures_order ... ok
[INFO] [stdout] test exchanges::bitget::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::bitget::tests::futures_place_batch_uses_mix_endpoint ... ok
[INFO] [stdout] test exchanges::bitget::tests::klines_chronological ... ok
[INFO] [stdout] test exchanges::bitget::tests::liquidations_are_refused_because_bitget_publishes_none ... ok
[INFO] [stdout] test exchanges::bitget::tests::futures_query_order_uses_mix_detail_and_state ... ok
[INFO] [stdout] test exchanges::bitget::tests::order_book_parses ... ok
[INFO] [stdout] test exchanges::bitget::tests::futures_ticker_uses_mix_path ... ok
[INFO] [stdout] test exchanges::bitget::tests::place_batch_aligns_success_and_failure ... ok
[INFO] [stdout] test exchanges::bitget::tests::place_order_signs_with_access_headers ... ok
[INFO] [stdout] test exchanges::bitget::tests::keepalive_user_data_pings_the_private_stream ... ok
[INFO] [stdout] test exchanges::bitget::tests::derivatives_set_leverage_hits_endpoint ... ok
[INFO] [stdout] test exchanges::bitget::tests::open_interest_reads_the_base_currency_figure ... ok
[INFO] [stdout] test exchanges::bitget::tests::signed_requires_passphrase ... ok
[INFO] [stdout] test exchanges::bitget::tests::subscribe_user_data_requires_a_passphrase ... ok
[INFO] [stdout] test exchanges::bitget::tests::stp_maps_to_stp_mode ... ok
[INFO] [stdout] test exchanges::bitget::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::bitget::tests::post_only_maps_to_the_post_only_order_type ... ok
[INFO] [stdout] test exchanges::bitget::tests::set_margin_mode_changes_what_later_orders_carry ... ok
[INFO] [stdout] test exchanges::bitget::tests::the_public_reads_carry_the_venue_stamp ... ok
[INFO] [stdout] test exchanges::bitget::tests::the_ticker_frame_answers_funding_and_mark_index_together ... ok
[INFO] [stdout] test exchanges::bitget::tests::sync_time_shifts_signed_timestamps ... ok
[INFO] [stdout] test exchanges::bitget::tests::ticker_and_error_mapping ... ok
[INFO] [stdout] test exchanges::bitget::tests::subscribe_user_data_logs_in_and_streams_orders_and_account ... ok
[INFO] [stdout] test exchanges::bitget::tests::query_and_balances_and_open_orders ... ok
[INFO] [stdout] test exchanges::bitget::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::bitget::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::bitget::tests::the_batch_entry_carries_the_position_half_it_was_dropping ... ok
[INFO] [stdout] test exchanges::bitget::tests::the_long_short_ratio_is_read_not_derived ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_delta_ticker_frame_prints_only_what_it_carries ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_futures_trigger_needs_no_order_filter ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_spot_client_refuses_the_derivatives_channels ... ok
[INFO] [stdout] test exchanges::bitget::tests::ws_execution_is_a_documented_gap ... ok
[INFO] [stdout] test exchanges::bitget::tests::ws_parses_trade_and_book ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_blocked_reply_is_reported_as_the_block_not_as_drift ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_bybit_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::bybit::tests::balances_parse_unified_wallet ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_spot_trigger_names_the_order_filter ... ok
[INFO] [stdout] test exchanges::bybit::tests::cancel_order_posts_signed ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_ticker_subscription_alone_yields_no_derivatives_prints ... ok
[INFO] [stdout] test exchanges::bybit::tests::amend_order_amends_then_reads_back ... ok
[INFO] [stdout] test exchanges::bybit::tests::category_by_market_type ... ok
[INFO] [stdout] test exchanges::bybit::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::bybit::tests::cancel_batch_is_one_call ... ok
[INFO] [stdout] test exchanges::bybit::tests::derivatives_set_leverage_hits_endpoint ... ok
[INFO] [stdout] test exchanges::bybit::tests::dropped_user_data_stream_reconnects_with_a_fresh_auth ... ok
[INFO] [stdout] test exchanges::bybit::tests::derivatives_close_position_reduce_only ... ok
[INFO] [stdout] test exchanges::bybit::tests::derivatives_set_margin_mode_switches_isolated ... ok
[INFO] [stdout] test exchanges::bybit::tests::empty_ticker_list_is_not_found ... ok
[INFO] [stdout] test exchanges::bybit::tests::derivatives_positions_parse ... ok
[INFO] [stdout] test exchanges::bybit::tests::a_trigger_carries_the_direction_the_market_must_cross ... ok
[INFO] [stdout] test exchanges::bybit::tests::all_liquidation_carries_the_side_hitting_the_book ... ok
[INFO] [stdout] test exchanges::bybit::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::bybit::tests::error_envelope_maps_to_taxonomy ... ok
[INFO] [stdout] test exchanges::bybit::tests::hedge_mode_sends_the_position_index ... ok
[INFO] [stdout] test exchanges::bybit::tests::interval_mapping ... ok
[INFO] [stdout] test exchanges::bybit::tests::place_and_cancel_order_over_ws_trade ... ok
[INFO] [stdout] test exchanges::bybit::tests::place_batch_returns_per_order_results ... ok
[INFO] [stdout] test exchanges::bybit::tests::place_oco_is_unsupported ... ok
[INFO] [stdout] test exchanges::bybit::tests::open_orders_filtered_and_unfiltered ... ok
[INFO] [stdout] test exchanges::bybit::tests::post_only_and_reduce_only_reach_every_order_path ... ok
[INFO] [stdout] test exchanges::bybit::tests::query_missing_order_is_not_found ... ok
[INFO] [stdout] test exchanges::bybit::tests::query_order_parses_realtime_list ... ok
[INFO] [stdout] test exchanges::bybit::tests::split_wire_symbol_uses_known_quotes ... ok
[INFO] [stdout] test exchanges::bybit::tests::stp_maps_to_smp_type ... ok
[INFO] [stdout] test exchanges::bybit::tests::keepalive_user_data_pings_the_private_stream ... ok
[INFO] [stdout] test exchanges::bybit::tests::klines_are_reversed_to_chronological ... ok
[INFO] [stdout] test exchanges::bybit::tests::order_book_parses_levels ... ok
[INFO] [stdout] test exchanges::bybit::tests::subscribe_without_ws_errors_and_poll_empty ... ok
[INFO] [stdout] test exchanges::bybit::tests::place_order_signs_with_bapi_headers ... ok
[INFO] [stdout] test exchanges::bybit::tests::subscribe_sends_op_and_poll_parses_trades_and_book ... ok
[INFO] [stdout] test exchanges::bybit::tests::subscribe_user_data_authenticates_and_streams_orders_and_wallet ... ok
[INFO] [stdout] test exchanges::bybit::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::bybit::tests::the_polled_figures_are_read_over_rest ... ok
[INFO] [stdout] test exchanges::bybit::tests::the_websocket_frame_carries_the_stp_policy ... ok
[INFO] [stdout] test exchanges::bybit::tests::ticker_unwraps_envelope_and_targets_url ... ok
[INFO] [stdout] test exchanges::bybit::tests::signed_without_credentials_errors ... ok
[INFO] [stdout] test exchanges::bybit::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::bybit::tests::ws_ticker_and_book_delta_parse ... ok
[INFO] [stdout] test exchanges::coinbase::tests::a_coinbase_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::bybit::tests::subscribe_user_data_requires_credentials ... ok
[INFO] [stdout] test exchanges::bybit::tests::sync_time_shifts_signed_timestamps ... ok
[INFO] [stdout] test exchanges::bybit::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::coinbase::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::bybit::tests::ws_trade_requires_credentials ... ok
[INFO] [stdout] test exchanges::bybit::tests::ws_trade_surfaces_rejection ... ok
[INFO] [stdout] test exchanges::coinbase::tests::a_stop_market_is_refused_rather_than_given_an_invented_limit ... ok
[INFO] [stdout] test exchanges::coinbase::tests::configurations_that_cannot_hold_both_settings_are_refused ... ok
[INFO] [stdout] test exchanges::coinbase::tests::order_book_parses_object_levels ... ok
[INFO] [stdout] test exchanges::coinbase::tests::place_order_rejection ... ok
[INFO] [stdout] test exchanges::coinbase::tests::signed_requires_private_key ... ok
[INFO] [stdout] test exchanges::coinbase::tests::place_order_limit_configuration ... ok
[INFO] [stdout] test exchanges::coinbase::tests::query_order_and_balances ... ok
[INFO] [stdout] test exchanges::coinbase::tests::klines_reversed ... ok
[INFO] [stdout] test exchanges::coinbase::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::gate::tests::a_finished_futures_order_is_a_fill_or_a_cancel_by_finish_as ... ok
[INFO] [stdout] test exchanges::coinbase::tests::ticker_parses ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_book_update_parses_both_sides ... ok
[INFO] [stdout] test exchanges::coinbase::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_client_subscribes_on_the_futures_host ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_client_subscribes_to_the_futures_channels_for_its_own_user ... ok
[INFO] [stdout] test exchanges::coinbase::tests::sync_time_shifts_the_jwt ... ok
[INFO] [stdout] test exchanges::coinbase::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::coinbase::tests::jwt_is_valid_es256_and_carries_uri ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_order_frame_becomes_an_order_update ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_balance_frame_becomes_a_balance_update ... ok
[INFO] [stdout] test exchanges::coinbase::tests::ws_parses_trades_and_l2 ... ok
[INFO] [stdout] test exchanges::coinbase::tests::a_stop_limit_carries_its_configuration_and_direction ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_trade_takes_its_side_from_the_sign_of_the_size ... ok
[INFO] [stdout] test exchanges::gate::tests::a_gate_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::gate::tests::a_spot_stop_market_is_refused_rather_than_given_an_invented_price ... ok
[INFO] [stdout] test exchanges::gate::tests::a_spot_trigger_goes_to_the_price_order_endpoint_with_its_rule ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_stop_market_takes_the_market_and_signs_its_size ... ok
[INFO] [stdout] test exchanges::gate::tests::a_futures_ticker_reports_no_top_of_book ... ok
[INFO] [stdout] test exchanges::gate::tests::amend_order_patches_in_place ... ok
[INFO] [stdout] test exchanges::gate::tests::a_spot_client_refuses_the_gate_derivatives_surface ... ok
[INFO] [stdout] test exchanges::gate::tests::a_spot_client_still_subscribes_to_spot_channels ... ok
[INFO] [stdout] test exchanges::gate::tests::cancel_batch_is_one_call ... ok
[INFO] [stdout] test exchanges::gate::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_cancel_order_targets_futures_endpoint ... ok
[INFO] [stdout] test exchanges::gate::tests::derivatives_set_leverage_and_cross_switch ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_klines_parse_object_rows ... ok
[INFO] [stdout] test exchanges::gate::tests::dropped_user_data_stream_reconnects_with_fresh_signed_frames ... ok
[INFO] [stdout] test exchanges::gate::tests::derivatives_positions_parse_cross_and_isolated ... ok
[INFO] [stdout] test exchanges::gate::tests::dual_mode_closes_with_auto_size_and_opens_by_sign ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_balances_split_total_and_available ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_limit_sell_signs_size_negative ... ok
[INFO] [stdout] test exchanges::gate::tests::derivatives_close_position_is_reduce_only_opposite ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_market_order_uses_signed_size_and_ioc ... ok
[INFO] [stdout] test exchanges::gate::tests::gate_polled_reads_report_what_went_wrong ... ok
[INFO] [stdout] test exchanges::gate::tests::gate_refuses_liquidations ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_order_book_parses_object_levels ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_open_orders_parse_contract_shape ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_ticker_takes_bid_ask_from_the_book ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_orders_carry_the_time_in_force_or_refuse_it ... ok
[INFO] [stdout] test exchanges::gate::tests::gate_drops_futures_frames_it_cannot_read ... ok
[INFO] [stdout] test exchanges::gate::tests::futures_query_order_uses_futures_endpoint_and_shape ... ok
[INFO] [stdout] test exchanges::gate::tests::order_book_parses ... ok
[INFO] [stdout] test exchanges::gate::tests::open_orders_requires_symbol ... ok
[INFO] [stdout] test exchanges::gate::tests::keepalive_user_data_pings_the_private_stream ... ok
[INFO] [stdout] test exchanges::gate::tests::klines_field_order ... ok
[INFO] [stdout] test exchanges::gate::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::gate::tests::place_batch_reads_succeeded_flag ... ok
[INFO] [stdout] test exchanges::gate::tests::place_order_signs_with_sha512_body_hash ... ok
[INFO] [stdout] test exchanges::gate::tests::signed_requires_credentials ... ok
[INFO] [stdout] test exchanges::gate::tests::query_and_balances ... ok
[INFO] [stdout] test exchanges::gate::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::gate::tests::place_and_cancel_order_over_ws ... ok
[INFO] [stdout] test exchanges::gate::tests::place_oco_is_unsupported ... ok
[INFO] [stdout] test exchanges::gate::tests::stp_maps_to_stp_act ... ok
[INFO] [stdout] test exchanges::gate::tests::the_futures_ticker_answers_funding_and_mark_index_on_gate ... ok
[INFO] [stdout] test exchanges::gate::tests::subscribe_user_data_authenticates_and_streams_orders_and_balances ... ok
[INFO] [stdout] test exchanges::gate::tests::the_futures_user_id_is_looked_up_once ... ok
[INFO] [stdout] test exchanges::gate::tests::sync_time_shifts_signed_timestamps ... ok
[INFO] [stdout] test exchanges::gate::tests::the_polled_figures_come_from_one_row_stamped_in_seconds ... ok
[INFO] [stdout] test exchanges::gate::tests::subscribe_user_data_requires_credentials ... ok
[INFO] [stdout] test exchanges::gate::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::gate::tests::the_websocket_frame_carries_the_stp_policy ... ok
[INFO] [stdout] test exchanges::gate::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::gate::tests::ws_order_requires_credentials ... ok
[INFO] [stdout] test exchanges::gate::tests::ticker_parses ... ok
[INFO] [stdout] test exchanges::gate::tests::ws_order_surfaces_rejection ... ok
[INFO] [stdout] test exchanges::gate::tests::ws_parses_trade_and_book ... ok
[INFO] [stdout] test exchanges::htx::tests::a_blocked_reply_is_reported_as_the_block_not_as_drift ... ok
[INFO] [stdout] test exchanges::htx::tests::a_cross_account_frame_becomes_a_balance_update ... ok
[INFO] [stdout] test exchanges::htx::tests::a_real_trade_frame_parses ... ok
[INFO] [stdout] test exchanges::htx::tests::a_spot_client_refuses_the_htx_derivatives_surface ... ok
[INFO] [stdout] test exchanges::htx::tests::a_futures_trade_frame_parses ... ok
[INFO] [stdout] test exchanges::htx::tests::a_spot_client_still_subscribes_to_the_spot_stream ... ok
[INFO] [stdout] test exchanges::htx::tests::a_futures_client_subscribes_on_the_linear_swap_host ... ok
[INFO] [stdout] test exchanges::htx::tests::a_futures_client_authenticates_and_subscribes_to_the_cross_topics ... ok
[INFO] [stdout] test exchanges::htx::tests::a_spot_trigger_goes_to_the_algo_endpoint_and_is_named ... ok
[INFO] [stdout] test exchanges::htx::tests::a_futures_detail_frame_reads_its_paired_top_of_book ... ok
[INFO] [stdout] test exchanges::htx::tests::a_cross_order_frame_becomes_an_order_update ... ok
[INFO] [stdout] test exchanges::htx::tests::a_subscribe_ack_on_the_notification_socket_is_not_an_event ... ok
[INFO] [stdout] test exchanges::htx::tests::a_swap_stop_limit_carries_its_limit_price ... ok
[INFO] [stdout] test exchanges::htx::tests::a_swap_trigger_goes_to_the_trigger_endpoint_and_names_its_comparison ... ok
[INFO] [stdout] test exchanges::htx::tests::amend_and_oco_are_unsupported ... ok
[INFO] [stdout] test exchanges::htx::tests::an_htx_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::htx::tests::an_unknown_order_status_number_is_not_reported_as_filled ... ok
[INFO] [stdout] test exchanges::htx::tests::balances_merge_trade_and_frozen ... ok
[INFO] [stdout] test exchanges::htx::tests::cancel_batch_is_one_call ... ok
[INFO] [stdout] test exchanges::htx::tests::close_position_is_reduce_only_opposite ... ok
[INFO] [stdout] test exchanges::htx::tests::error_status_maps ... ok
[INFO] [stdout] test exchanges::htx::tests::derivatives_positions_parse_cross ... ok
[INFO] [stdout] test exchanges::htx::tests::dropped_user_data_stream_reconnects_with_a_fresh_auth ... ok
[INFO] [stdout] test exchanges::htx::tests::futures_query_order_uses_swap_order_info ... ok
[INFO] [stdout] test exchanges::htx::tests::futures_ticker_targets_swap_host_and_contract_code ... ok
[INFO] [stdout] test exchanges::htx::tests::htx_detail_without_pairs_reports_no_top_of_book ... ok
[INFO] [stdout] test exchanges::htx::tests::htx_drops_notification_frames_it_cannot_read ... ok
[INFO] [stdout] test exchanges::htx::tests::futures_market_order_uses_cross_swap_family ... ok
[INFO] [stdout] test exchanges::htx::tests::htx_polled_reads_report_what_went_wrong ... ok
[INFO] [stdout] test exchanges::htx::tests::htx_refuses_a_combined_mark_index_channel ... ok
[INFO] [stdout] test exchanges::htx::tests::iso_and_encode ... ok
[INFO] [stdout] test exchanges::htx::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::htx::tests::keepalive_user_data_pings_the_private_stream ... ok
[INFO] [stdout] test exchanges::htx::tests::klines_reversed_named_fields ... ok
[INFO] [stdout] test exchanges::htx::tests::open_interest_reads_the_contract_count_not_the_base_amount ... ok
[INFO] [stdout] test exchanges::htx::tests::order_book_numeric_levels ... ok
[INFO] [stdout] test exchanges::htx::tests::futures_balances_split_available_and_frozen ... ok
[INFO] [stdout] test exchanges::htx::tests::place_batch_reads_per_order_err_code ... ok
[INFO] [stdout] test exchanges::htx::tests::futures_cancel_and_open_orders_use_swap_endpoints ... ok
[INFO] [stdout] test exchanges::htx::tests::place_order_fetches_account_and_signs ... ok
[INFO] [stdout] test exchanges::htx::tests::futures_orders_carry_the_time_in_force_or_refuse_it ... ok
[INFO] [stdout] test exchanges::htx::tests::query_order_parses_type_and_state ... ok
[INFO] [stdout] test exchanges::htx::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::gate::tests::http_error_maps_to_taxonomy ... ok
[INFO] [stdout] test exchanges::htx::tests::set_leverage_persists_and_flows_into_orders ... ok
[INFO] [stdout] test exchanges::htx::tests::set_margin_mode_isolated_is_unsupported ... ok
[INFO] [stdout] test exchanges::htx::tests::signed_requires_credentials ... ok
[INFO] [stdout] test exchanges::htx::tests::spot_refuses_post_only_on_a_market_order ... ok
[INFO] [stdout] test exchanges::htx::tests::subscribe_user_data_authenticates_and_streams_orders_and_accounts ... ok
[INFO] [stdout] test exchanges::htx::tests::subscribe_user_data_requires_credentials ... ok
[INFO] [stdout] test exchanges::htx::tests::the_elite_ratio_is_carried_as_published ... ok
[INFO] [stdout] test exchanges::htx::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::htx::tests::sync_time_shifts_signed_timestamps ... ok
[INFO] [stdout] test exchanges::htx::tests::the_notification_ping_is_answered_in_its_own_form ... ok
[INFO] [stdout] test exchanges::htx::tests::the_notification_socket_carries_funding_and_liquidations ... ok
[INFO] [stdout] test exchanges::htx::tests::the_private_heartbeat_is_answered_in_its_own_shape ... ok
[INFO] [stdout] test exchanges::htx::tests::ticker_reads_numeric_json ... ok
[INFO] [stdout] test exchanges::htx::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::htx::tests::ws_execution_is_a_documented_gap ... ok
[INFO] [stdout] test exchanges::htx::tests::ws_parses_trade_and_depth ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_blocked_reply_is_reported_as_the_block_not_as_drift ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_futures_book_delta_carries_one_side ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_futures_book_snapshot_parses ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_futures_client_subscribes_on_the_futures_service ... ok
[INFO] [stdout] test exchanges::htx::tests::the_public_heartbeat_is_answered_with_the_same_value ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_futures_frame_for_an_unsubscribed_product_is_dropped ... ok
[INFO] [stdout] test exchanges::htx::tests::the_public_reads_carry_the_venue_stamp ... ok
[INFO] [stdout] test exchanges::htx::tests::the_v2_envelope_is_read_as_success_and_its_errors_as_errors ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_spot_client_refuses_the_kraken_derivatives_surface ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_futures_trade_frame_parses ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_spot_stop_limit_sends_the_trigger_as_price_and_the_limit_as_price2 ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_futures_trigger_carries_its_stop_price_and_signal ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_spot_stop_market_sends_only_the_trigger ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_spot_client_still_speaks_the_v2_protocol ... ok
[INFO] [stdout] test exchanges::kraken::tests::amend_order_edits_then_reads_new_txid ... ok
[INFO] [stdout] test exchanges::kraken::tests::close_position_is_reduce_only_opposite ... ok
[INFO] [stdout] test exchanges::kraken::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::kraken::tests::an_unsubscribed_derivatives_print_is_not_emitted_by_kraken ... ok
[INFO] [stdout] test exchanges::kraken::tests::balances_free_minus_hold ... ok
[INFO] [stdout] test exchanges::kraken::tests::cancel_batch_uses_the_native_endpoint ... ok
[INFO] [stdout] test exchanges::kraken::tests::a_ws_ticker_reports_no_stamp_because_kraken_sends_none ... ok
[INFO] [stdout] test exchanges::htx::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::kraken::tests::derivatives_positions_parse ... ok
[INFO] [stdout] test exchanges::kraken::tests::dropped_user_data_stream_reconnects_with_a_fresh_token ... ok
[INFO] [stdout] test exchanges::kraken::tests::error_array_maps ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_cancel_and_open_orders_use_derivatives_endpoints ... ok
[INFO] [stdout] test exchanges::kraken::tests::expired_ws_token_is_refetched ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_error_envelope_maps ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_balances_from_flex_currencies ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_keepalive_user_data_is_a_noop ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_market_order_uses_sendorder ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_klines_from_charts_api ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_order_book_numeric_pairs ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_open_orders_update_reports_a_cancel ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_symbol_is_pf_usd_settled ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_ticker_filters_by_symbol_on_the_futures_host ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_orders_carry_the_time_in_force_or_refuse_it ... ok
[INFO] [stdout] test exchanges::kraken::tests::hedge_mode_is_refused_rather_than_ignored ... ok
[INFO] [stdout] test exchanges::kraken::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_query_order_uses_orders_status ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_subscribe_user_data_signs_the_challenge_and_subscribes_the_feeds ... ok
[INFO] [stdout] test exchanges::kraken::tests::klines_skip_last_key ... ok
[INFO] [stdout] test exchanges::kraken::tests::keepalive_user_data_pings_the_private_stream ... ok
[INFO] [stdout] test exchanges::kraken::tests::kraken_drops_futures_frames_it_cannot_read ... ok
[INFO] [stdout] test exchanges::kraken::tests::kraken_open_interest_reports_what_went_wrong ... ok
[INFO] [stdout] test exchanges::kraken::tests::kraken_parses_a_trade_snapshot ... ok
[INFO] [stdout] test exchanges::kraken::tests::kraken_refuses_what_it_does_not_publish ... ok
[INFO] [stdout] test exchanges::kraken::tests::nonce_is_monotonic_within_a_millisecond ... ok
[INFO] [stdout] test exchanges::kraken::tests::place_oco_is_unsupported ... ok
[INFO] [stdout] test exchanges::kraken::tests::place_order_signs_with_sha256_and_hmac512 ... ok
[INFO] [stdout] test exchanges::kraken::tests::open_interest_reads_the_products_row ... ok
[INFO] [stdout] test exchanges::kraken::tests::order_book_parses ... ok
[INFO] [stdout] test exchanges::kraken::tests::query_order_parses ... ok
[INFO] [stdout] test exchanges::kraken::tests::place_and_cancel_order_over_ws ... ok
[INFO] [stdout] test exchanges::kraken::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::kraken::tests::place_batch_uses_the_indexed_add_order_batch_form ... ok
[INFO] [stdout] test exchanges::kraken::tests::subscribe_user_data_fetches_token_and_streams_executions_and_balances ... ok
[INFO] [stdout] test exchanges::kraken::tests::sync_time_shifts_the_nonce ... ok
[INFO] [stdout] test exchanges::kraken::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::kraken::tests::the_batch_and_websocket_paths_refuse_what_kraken_cannot_say ... ok
[INFO] [stdout] test exchanges::kraken::tests::ticker_takes_single_result ... ok
[INFO] [stdout] test exchanges::kraken::tests::unexpired_ws_token_is_reused ... ok
[INFO] [stdout] test exchanges::kraken::tests::the_futures_ticker_answers_funding_and_mark_index ... ok
[INFO] [stdout] test exchanges::kraken::tests::the_websocket_path_refuses_post_only_rather_than_dropping_it ... ok
[INFO] [stdout] test exchanges::kraken::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::kraken::tests::ws_v2_parses_trade_and_book ... ok
[INFO] [stdout] test exchanges::kraken::tests::ws_order_surfaces_rejection ... ok
[INFO] [stdout] test exchanges::kraken::tests::ws_order_rejects_the_futures_client ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_contract_name_maps_back_to_its_pair ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_futures_client_subscribes_to_contract_topics ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_futures_client_subscribes_to_the_contract_account_not_the_spot_one ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_futures_ticker_parses ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_futures_trade_frame_converts_its_nanosecond_stamp ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_futures_trigger_stays_on_the_order_path_and_watches_the_mark ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_futures_book_change_is_one_csv_level ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_kucoin_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_spot_client_still_subscribes_to_market_topics ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_spot_trigger_goes_to_the_stop_order_path_with_its_direction ... ok
[INFO] [stdout] test exchanges::kucoin::tests::amend_is_unsupported ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_contract_order_frame_becomes_an_order_update ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_contract_wallet_frame_becomes_a_balance_update ... ok
[INFO] [stdout] test exchanges::kucoin::tests::a_spot_client_refuses_the_kucoin_derivatives_surface ... ok
[INFO] [stdout] test exchanges::kucoin::tests::cancel_batch_is_sequential ... ok
[INFO] [stdout] test exchanges::kucoin::tests::derivatives_close_position_reduce_only ... ok
[INFO] [stdout] test exchanges::kucoin::tests::derivatives_positions_parse_contracts ... ok
[INFO] [stdout] test exchanges::kucoin::tests::derivatives_set_margin_mode_changes_mode ... ok
[INFO] [stdout] test exchanges::kucoin::tests::dropped_user_data_stream_reconnects_with_a_fresh_bullet_token ... ok
[INFO] [stdout] test exchanges::kucoin::tests::error_mapping ... ok
[INFO] [stdout] test exchanges::kraken::tests::set_margin_mode_isolated_is_unsupported ... ok
[INFO] [stdout] test exchanges::kucoin::tests::futures_client_uses_futures_host_and_contract_symbol ... ok
[INFO] [stdout] test exchanges::kucoin::tests::an_unsubscribed_instrument_subject_is_dropped ... ok
[INFO] [stdout] test exchanges::kucoin::tests::futures_place_order_carries_leverage_and_contract_symbol ... ok
[INFO] [stdout] test exchanges::kucoin::tests::hedge_mode_is_refused_rather_than_ignored ... ok
[INFO] [stdout] test exchanges::kucoin::tests::balances_and_open_orders ... ok
[INFO] [stdout] test exchanges::kucoin::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::kucoin::tests::klines_field_order_and_reverse ... ok
[INFO] [stdout] test exchanges::kucoin::tests::kucoin_drops_an_instrument_frame_without_prices ... ok
[INFO] [stdout] test exchanges::kucoin::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::kucoin::tests::kucoin_open_interest_reports_what_went_wrong ... ok
[INFO] [stdout] test exchanges::kucoin::tests::kucoin_refuses_what_it_does_not_publish ... ok
[INFO] [stdout] test exchanges::kucoin::tests::keepalive_user_data_pings_the_private_stream ... ok
[INFO] [stdout] test exchanges::kucoin::tests::open_interest_multiplies_contracts_by_the_contract_size ... ok
[INFO] [stdout] test exchanges::kucoin::tests::order_book_parses ... ok
[INFO] [stdout] test exchanges::kucoin::tests::kucoin_drops_futures_frames_it_cannot_read ... ok
[INFO] [stdout] test exchanges::kraken::tests::wire_symbol_maps_btc_to_xbt ... ok
[INFO] [stdout] test exchanges::kucoin::tests::place_batch_multi_per_order_results ... ok
[INFO] [stdout] test exchanges::kucoin::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::kucoin::tests::signed_requires_passphrase ... ok
[INFO] [stdout] test exchanges::kucoin::tests::place_order_generates_a_unique_client_oid_when_absent ... ok
[INFO] [stdout] test exchanges::kucoin::tests::query_order_status_from_flags ... ok
[INFO] [stdout] test exchanges::kucoin::tests::stp_maps_to_stp_flag ... ok
[INFO] [stdout] test exchanges::kucoin::tests::subscribe_user_data_negotiates_token_and_streams_orders_and_balance ... ok
[INFO] [stdout] test exchanges::kucoin::tests::sync_time_shifts_signed_timestamps ... ok
[INFO] [stdout] test exchanges::kucoin::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::kucoin::tests::place_oco_is_a_single_order_list ... ok
[INFO] [stdout] test exchanges::kucoin::tests::the_instrument_topic_answers_funding_and_mark_index ... ok
[INFO] [stdout] test exchanges::kucoin::tests::the_public_reads_carry_the_venue_stamp ... ok
[INFO] [stdout] test exchanges::kucoin::tests::place_order_signs_with_kc_headers_and_signed_passphrase ... ok
[INFO] [stdout] test exchanges::kucoin::tests::subscribe_user_data_requires_a_passphrase ... ok
[INFO] [stdout] test exchanges::kucoin::tests::ticker_from_stats ... ok
[INFO] [stdout] test exchanges::okx::tests::a_funding_frame_becomes_a_funding_event ... ok
[INFO] [stdout] test exchanges::kucoin::tests::ws_execution_is_a_documented_gap ... ok
[INFO] [stdout] test exchanges::kucoin::tests::ws_parses_trade_ticker_book ... ok
[INFO] [stdout] test exchanges::okx::tests::a_blocked_reply_is_reported_as_the_block_not_as_drift ... ok
[INFO] [stdout] test exchanges::okx::tests::a_spot_client_refuses_the_derivatives_channels ... ok
[INFO] [stdout] test exchanges::okx::tests::a_stop_limit_sends_its_limit_rather_than_the_sentinel ... ok
[INFO] [stdout] test exchanges::okx::tests::a_stop_market_goes_to_the_algo_endpoint_with_the_market_sentinel ... ok
[INFO] [stdout] test exchanges::okx::tests::amend_order_amends_then_reads_back ... ok
[INFO] [stdout] test exchanges::okx::tests::an_algo_rejection_surfaces ... ok
[INFO] [stdout] test exchanges::okx::tests::an_okx_trigger_without_a_stop_price_is_refused ... ok
[INFO] [stdout] test exchanges::okx::tests::balances_parse ... ok
[INFO] [stdout] test exchanges::kucoin::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::okx::tests::a_liquidation_frame_becomes_one_event_per_forced_order ... ok
[INFO] [stdout] test exchanges::okx::tests::a_combined_mark_index_channel_is_refused_rather_than_assembled ... ok
[INFO] [stdout] test exchanges::okx::tests::batch_and_oco_carry_the_configured_margin_mode ... ok
[INFO] [stdout] test exchanges::okx::tests::a_market_order_cannot_also_be_post_only ... ok
[INFO] [stdout] test exchanges::okx::tests::cancel_batch_is_one_call ... ok
[INFO] [stdout] test exchanges::okx::tests::derivatives_positions_parse ... ok
[INFO] [stdout] test exchanges::okx::tests::derivatives_set_leverage_preserves_margin_mode ... ok
[INFO] [stdout] test exchanges::okx::tests::error_code_maps_to_taxonomy ... ok
[INFO] [stdout] test exchanges::okx::tests::configured_margin_mode_reaches_every_order ... ok
[INFO] [stdout] test exchanges::okx::tests::dropped_user_data_stream_reconnects_with_a_fresh_login ... ok
[INFO] [stdout] test exchanges::okx::tests::hedge_mode_reaches_the_batch_and_bracket_paths ... ok
[INFO] [stdout] test exchanges::okx::tests::hedge_mode_names_the_position_side ... ok
[INFO] [stdout] test exchanges::okx::tests::interval_mapping ... ok
[INFO] [stdout] test exchanges::okx::tests::keepalive_user_data_pings_the_private_stream ... ok
[INFO] [stdout] test exchanges::okx::tests::iso8601_conversion ... ok
[INFO] [stdout] test exchanges::okx::tests::keepalive_user_data_is_a_noop_before_subscribe ... ok
[INFO] [stdout] test exchanges::okx::tests::klines_reversed ... ok
[INFO] [stdout] test exchanges::okx::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test exchanges::okx::tests::open_interest_reads_the_base_currency_figure ... ok
[INFO] [stdout] test exchanges::okx::tests::order_book_parses_four_field_levels ... ok
[INFO] [stdout] test exchanges::okx::tests::derivatives_close_position_reduce_only ... ok
[INFO] [stdout] test exchanges::okx::tests::liquidations_for_an_unsubscribed_market_are_dropped ... ok
[INFO] [stdout] test exchanges::okx::tests::place_and_cancel_order_over_ws ... ok
[INFO] [stdout] test exchanges::okx::tests::place_order_rejection_surfaces_scode ... ok
[INFO] [stdout] test exchanges::okx::tests::place_batch_per_order_results ... ok
[INFO] [stdout] test exchanges::okx::tests::place_order_signs_with_ok_access_headers ... ok
[INFO] [stdout] test exchanges::okx::tests::post_only_and_client_ids_reach_the_batch_and_bracket_paths ... ok
[INFO] [stdout] test exchanges::okx::tests::signed_requires_passphrase ... ok
[INFO] [stdout] test exchanges::okx::tests::stp_maps_to_stp_mode ... ok
[INFO] [stdout] test exchanges::okx::tests::query_order_parses_state ... ok
[INFO] [stdout] test exchanges::okx::tests::subscribe_user_data_logs_in_and_streams_orders_and_account ... ok
[INFO] [stdout] test exchanges::okx::tests::place_oco_is_a_single_algo_order ... ok
[INFO] [stdout] test exchanges::okx::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::okx::tests::subscribe_user_data_requires_a_passphrase ... ok
[INFO] [stdout] test exchanges::okx::tests::swap_client_appends_swap_to_inst_id ... ok
[INFO] [stdout] test exchanges::okx::tests::set_margin_mode_changes_what_later_orders_carry ... ok
[INFO] [stdout] test exchanges::okx::tests::subscribing_to_funding_and_liquidations_sends_the_venues_channels ... ok
[INFO] [stdout] test exchanges::okx::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::okx::tests::the_public_reads_carry_the_venue_stamp ... ok
[INFO] [stdout] test exchanges::okx::tests::the_long_short_ratio_becomes_proportions_that_sum_to_one ... ok
[INFO] [stdout] test exchanges::okx::tests::wire_symbol_uses_dash ... ok
[INFO] [stdout] test exchanges::okx::tests::the_websocket_frame_carries_reduce_only_and_the_stp_policy ... ok
[INFO] [stdout] test exchanges::okx::tests::ticker_unwraps_envelope ... ok
[INFO] [stdout] test exchanges::okx::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::okx::tests::ws_order_requires_a_passphrase ... ok
[INFO] [stdout] test exchanges::okx::tests::ws_order_carries_the_configured_margin_mode ... ok
[INFO] [stdout] test exchanges::paper::tests::builder_configuration_is_readable ... ok
[INFO] [stdout] test exchanges::okx::tests::ws_order_surfaces_rejection ... ok
[INFO] [stdout] test exchanges::paper::tests::cancel_unknown_order_is_not_found ... ok
[INFO] [stdout] test exchanges::okx::tests::ws_subscribe_and_parse ... ok
[INFO] [stdout] test exchanges::paper::tests::frictionless_fill_matches_the_mark_exactly ... ok
[INFO] [stdout] test exchanges::paper::tests::dead_mans_switch_fires_cancel_all_on_lost_heartbeat ... ok
[INFO] [stdout] test exchanges::paper::tests::insufficient_balance_is_rejected ... ok
[INFO] [stdout] test exchanges::paper::tests::debug_renders ... ok
[INFO] [stdout] test exchanges::paper::tests::insufficient_base_rejects_a_sell ... ok
[INFO] [stdout] test exchanges::paper::tests::order_without_a_price_needs_a_mark ... ok
[INFO] [stdout] test exchanges::paper::tests::market_sell_credits_quote_net_of_fee ... ok
[INFO] [stdout] test exchanges::paper::tests::marketable_limit_buy_fills_immediately ... ok
[INFO] [stdout] test exchanges::paper::tests::poll_events_emits_order_then_balance_update ... ok
[INFO] [stdout] test exchanges::paper::tests::market_buy_fills_with_slippage_and_fee ... ok
[INFO] [stdout] test exchanges::paper::tests::post_only_crossing_order_is_rejected ... ok
[INFO] [stdout] test exchanges::kraken::tests::signed_requires_credentials ... ok
[INFO] [stdout] test exchanges::paper::tests::resting_limit_locks_funds_and_is_cancelable ... ok
[INFO] [stdout] test exchanges::okx::tests::sync_time_corrects_the_signed_timestamp ... ok
[INFO] [stdout] test exchanges::kraken::tests::futures_numbers_stay_exact ... ok
[INFO] [stdout] test exchanges::paper::tests::stop_orders_are_unsupported ... ok
[INFO] [stdout] test exchanges::okx::tests::sync_time_rejects_a_response_without_a_timestamp ... ok
[INFO] [stdout] test exchanges::paper::tests::subscriptions_are_inert_and_name_is_paper ... ok
[INFO] [stdout] test exchanges::paper::tests::ticker_reports_the_mark_and_klines_are_unsupported ... ok
[INFO] [stdout] test exchanges::replay::tests::fills_against_the_replayed_mark ... ok
[INFO] [stdout] test exchanges::replay::tests::open_orders_and_cancel_delegate_to_paper ... ok
[INFO] [stdout] test exchanges::replay::tests::subscriptions_are_inert_and_delegate_market_data ... ok
[INFO] [stdout] test exchanges::tests::a_failed_status_is_reported_as_the_venue_refusing_not_the_parser_failing ... ok
[INFO] [stdout] test exchanges::replay::tests::recorded_tape_drives_indicator_signal_to_a_fill ... ok
[INFO] [stdout] test exchanges::replay::tests::replays_frames_then_finishes ... ok
[INFO] [stdout] test exchanges::tests::a_successful_status_keeps_the_drift_error_and_gains_the_body ... ok
[INFO] [stdout] test exchanges::tests::a_long_body_is_cut_and_marked ... ok
[INFO] [stdout] test exchanges::upbit::tests::klines_reversed ... ok
[INFO] [stdout] test exchanges::tests::a_multibyte_body_is_cut_on_a_character_boundary ... ok
[INFO] [stdout] test exchanges::upbit::tests::order_book_splits_units ... ok
[INFO] [stdout] test exchanges::upbit::tests::rate_limit_carries_the_venues_advised_wait ... ok
[INFO] [stdout] test exchanges::upbit::tests::signed_requires_credentials ... ok
[INFO] [stdout] test exchanges::upbit::tests::spot_only_fields_are_refused_and_the_client_id_is_carried ... ok
[INFO] [stdout] test exchanges::upbit::tests::place_order_signs_with_hs512_jwt_and_query_hash ... ok
[INFO] [stdout] test exchanges::upbit::tests::system_clock_is_sane ... ok
[INFO] [stdout] test exchanges::upbit::tests::query_and_balances ... ok
[INFO] [stdout] test exchanges::upbit::tests::the_public_reads_carry_the_venue_stamp ... ok
[INFO] [stdout] test exchanges::upbit::tests::two_signed_calls_on_a_frozen_clock_get_different_nonces ... ok
[INFO] [stdout] test exchanges::upbit::tests::ticker_uses_trade_price ... ok
[INFO] [stdout] test exchanges::upbit::tests::wire_symbol_is_quote_first ... ok
[INFO] [stdout] test exchanges::upbit::tests::ws_parses_trade_and_orderbook ... ok
[INFO] [stdout] test feeds::tests::build_before_a_price_channel_is_rejected ... ok
[INFO] [stdout] test exchanges::tests::a_short_body_is_carried_whole ... ok
[INFO] [stdout] test exchanges::upbit::tests::works_as_a_boxed_exchange ... ok
[INFO] [stdout] test exchanges::tests::an_error_that_is_not_a_parse_failure_passes_through_untouched ... ok
[INFO] [stdout] test feeds::tests::crossed_snapshot_is_rejected ... ok
[INFO] [stdout] test exchanges::upbit::tests::debug_reports_state_without_credentials ... ok
[INFO] [stdout] test feeds::tests::breadth_universe_converts_to_cross_section ... ok
[INFO] [stdout] test feeds::tests::empty_universe_is_rejected ... ok
[INFO] [stdout] test feeds::tests::short_liquidation_accumulates_and_resets ... ok
[INFO] [stdout] test feeds::tests::snapshot_converts_to_core_order_book ... ok
[INFO] [stdout] test feeds::tests::trade_print_converts_to_core_trade ... ok
[INFO] [stdout] test instruments::tests::cache_stores_and_refreshes_deterministically ... ok
[INFO] [stdout] test feeds::tests::derivatives_channels_fold_into_a_tick ... ok
[INFO] [stdout] test idempotency::tests::ids_are_unique_over_a_run ... ok
[INFO] [stdout] test instruments::tests::rounds_quantity_and_price_down_to_grid ... ok
[INFO] [stdout] test instruments::tests::validate_rejects_quantity_violations ... ok
[INFO] [stdout] test idempotency::tests::seed_makes_the_sequence_reproducible ... ok
[INFO] [stdout] test instruments::tests::tiny_increment_does_not_panic_on_overflow ... ok
[INFO] [stdout] test instruments::tests::zero_increment_is_a_no_op ... ok
[INFO] [stdout] test normalize::tests::formats_without_scientific_notation_or_trailing_zeros ... ok
[INFO] [stdout] test normalize::tests::optional_decimal_handles_absent_and_null ... ok
[INFO] [stdout] test instruments::tests::validate_rejects_price_and_notional_violations ... ok
[INFO] [stdout] test observability::tests::redaction_removes_secrets_and_ignores_empty ... ok
[INFO] [stdout] test observability::tests::staleness_and_health ... ok
[INFO] [stdout] test options::tests::builders_override_fields ... ok
[INFO] [stdout] test options::tests::default_is_mainnet_spot ... ok
[INFO] [stdout] test options::tests::derivatives_classification ... ok
[INFO] [stdout] test options::tests::testnet_flips_only_the_flag ... ok
[INFO] [stdout] test instruments::tests::validate_accepts_a_clean_order ... ok
[INFO] [stdout] test orderbook::tests::diff_before_snapshot_is_uninitialized ... ok
[INFO] [stdout] test orderbook::tests::empty_book_has_no_mid_or_spread ... ok
[INFO] [stdout] test normalize::tests::parses_clean_and_padded_strings ... ok
[INFO] [stdout] test normalize::tests::rejects_invalid_decimals ... ok
[INFO] [stdout] test observability::tests::health_with_no_messages_is_never_healthy ... ok
[INFO] [stdout] test orderbook::tests::snapshot_drops_zero_quantity_levels ... ok
[INFO] [stdout] test orderbook::tests::snapshot_then_best_levels ... ok
[INFO] [stdout] test orderbook::tests::gap_marks_uninitialized_for_resync ... ok
[INFO] [stdout] test orderbook::tests::stale_diff_is_ignored ... ok
[INFO] [stdout] test orderbook::tests::to_snapshot_limits_depth_and_orders_best_first ... ok
[INFO] [stdout] test positions::tests::side_sign ... ok
[INFO] [stdout] test positions::tests::signed_quantity_and_notional ... ok
[INFO] [stdout] test ratelimiter::tests::charges_weight_until_the_budget_is_spent ... ok
[INFO] [stdout] test ratelimiter::tests::window_rolls_and_resets_budget ... ok
[INFO] [stdout] test reconcile::tests::detects_vanished_and_appeared ... ok
[INFO] [stdout] test reconcile::tests::empty_inputs ... ok
[INFO] [stdout] test reconcile::tests::identical_views_have_no_divergence ... ok
[INFO] [stdout] test retry::tests::delay_doubles_and_caps ... ok
[INFO] [stdout] test retry::tests::jitter_scales_within_the_delay ... ok
[INFO] [stdout] test retry::tests::retry_decision_respects_the_limit ... ok
[INFO] [stdout] test signing::tests::binance_style_query_signature_vector ... ok
[INFO] [stdout] test positions::tests::computed_pnl_for_both_sides ... ok
[INFO] [stdout] test signing::tests::hmac_sha256_matches_known_vector ... ok
[INFO] [stdout] test positions::tests::hedge_side_follows_side_and_reduce_only ... ok
[INFO] [stdout] test ratelimiter::tests::venue_cool_off_blocks_until_it_expires ... ok
[INFO] [stdout] test signing::tests::plain_hash_vectors ... ok
[INFO] [stdout] test signing::tests::hmac_sha512_matches_known_vector ... ok
[INFO] [stdout] test signing::tests::hmac_with_base64_secret_matches_decoded ... ok
[INFO] [stdout] test symbol::tests::new_upper_cases_assets ... ok
[INFO] [stdout] test symbol::tests::parses_slash_and_dash_separators ... ok
[INFO] [stdout] test symbol::tests::concatenated_form_has_no_separator ... ok
[INFO] [stdout] test symbol::tests::display_is_canonical_slash_form ... ok
[INFO] [stdout] test throttle::tests::a_normal_response_passes_straight_through ... ok
[INFO] [stdout] test symbol::tests::rejects_missing_or_empty_parts ... ok
[INFO] [stdout] test symbol::tests::round_trips_through_json ... ok
[INFO] [stdout] test throttle::tests::a_budget_throttles_once_its_capacity_is_spent ... ok
[INFO] [stdout] test throttle::tests::a_read_is_retried_after_a_timeout ... ok
[INFO] [stdout] test throttle::tests::a_permanent_failure_is_returned_at_once ... ok
[INFO] [stdout] test throttle::tests::a_refusal_without_a_stated_wait_falls_back_to_the_default_cool_off ... ok
[INFO] [stdout] test throttle::tests::a_refusal_is_retried_and_waits_exactly_what_the_venue_advised ... ok
[INFO] [stdout] test throttle::tests::a_venue_cool_off_also_holds_back_the_next_request ... ok
[INFO] [stdout] test throttle::tests::a_weigher_spends_the_budget_faster_on_expensive_calls ... ok
[INFO] [stdout] test throttle::tests::an_order_placement_is_never_retried_after_a_timeout ... ok
[INFO] [stdout] test throttle::tests::an_order_placement_is_retried_after_a_refusal ... ok
[INFO] [stdout] test transport::tests::a_header_is_found_whatever_its_case ... ok
[INFO] [stdout] test transport::tests::http_method_strings ... ok
[INFO] [stdout] test throttle::tests::debug_reports_whether_a_budget_is_configured ... ok
[INFO] [stdout] test throttle::tests::only_a_refusal_makes_a_write_repeatable ... ok
[INFO] [stdout] test throttle::tests::retries_stop_at_the_policy_limit_and_the_last_answer_is_returned ... ok
[INFO] [stdout] test transport::tests::mock_http_returns_queued_responses_fifo_and_records ... ok
[INFO] [stdout] test transport::tests::mock_ws_replays_frames_then_closes ... ok
[INFO] [stdout] test transport::tests::mock_ws_surfaces_read_errors_and_blocks_send_after_close ... ok
[INFO] [stdout] test exchanges::replay::tests::book_snapshot_frame_sets_the_mid_mark ... ok
[INFO] [stdout] test transport::tests::request_builder ... ok
[INFO] [stdout] test transport::tests::retry_after_declines_what_it_cannot_read ... ok
[INFO] [stdout] test transport::tests::response_success_classification ... ok
[INFO] [stdout] test transport::tests::retry_after_reads_whole_and_fractional_seconds ... ok
[INFO] [stdout] test transport::tests::mock_transports_render_debug ... ok
[INFO] [stdout] test transport::tests::mock_ws_connect_without_script_is_immediately_closed ... ok
[INFO] [stdout] test types::tests::oco_request_builders_and_validate ... ok
[INFO] [stdout] test types::tests::order_remaining_and_open ... ok
[INFO] [stdout] test types::tests::order_request_round_trips_through_json ... ok
[INFO] [stdout] test types::tests::order_request_stp_defaults_and_builder ... ok
[INFO] [stdout] test types::tests::side_and_type_helpers ... ok
[INFO] [stdout] test types::tests::validate_catches_bad_requests ... ok
[INFO] [stdout] test types::tests::with_stop_price_promotes_the_order_type ... ok
[INFO] [stdout] test types::tests::status_open_classification ... ok
[INFO] [stdout] test wsutil::tests::a_client_without_a_transport_reports_the_drop_and_stops ... ok
[INFO] [stdout] test wsutil::tests::a_reconnect_that_cannot_resubscribe_is_not_reported_as_recovered ... ok
[INFO] [stdout] test wsutil::tests::a_refused_reconnect_leaves_the_connection_closed ... ok
[INFO] [stdout] test wsutil::tests::live_connection_is_left_untouched ... ok
[INFO] [stdout] test wsutil::tests::reopens_and_replays_subscribes_on_close ... ok
[INFO] [stdout] test wsutil::tests::soak_survives_many_reconnect_cycles ... ok
[INFO] [stdout] test types::tests::balance_total ... ok
[INFO] [stdout] test exchanges::replay::tests::debug_renders ... ok
[INFO] [stdout] test idempotency::tests::ids_carry_the_prefix_and_increment ... ok
[INFO] [stdout] test orderbook::tests::contiguous_diff_applies_and_advances ... ok
[INFO] [stderr]      Running tests/conformance.rs (/opt/rustwide/target/debug/build/wickra-exchange-core/9efad8eef1c9def4/out/conformance-9efad8eef1c9def4)
[INFO] [stdout] test types::tests::builder_flags_and_fields ... ok
[INFO] [stdout] test types::tests::constructors_set_side_type_and_price ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 669 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test every_venue_client_is_object_safe_and_named ... ok
[INFO] [stdout] test every_trading_venue_is_object_safe_as_ws_user_data_and_ws_execution ... ok
[INFO] [stdout] test a_market_order_asking_for_fill_or_kill_is_refused_where_it_cannot_be_said ... ok
[INFO] [stdout] test a_futures_client_never_subscribes_to_a_spot_stream ... ok
[INFO] [stdout] test paper_exchange_satisfies_the_lifecycle ... ok
[INFO] [stdout] test a_client_refuses_a_market_it_does_not_route_before_it_sends_anything ... ok
[INFO] [stdout] test a_trigger_order_is_either_carried_or_refused_but_never_flattened ... ok
[INFO] [stdout] test the_batch_and_websocket_paths_refuse_triggers_too ... ok
[INFO] [stdout] test replay_exchange_satisfies_the_lifecycle ... ok
[INFO] [stdout] test two_fields_in_one_venue_slot_are_refused_together_not_silently_resolved ... ok
[INFO] [stdout] test the_batch_path_carries_every_field_too ... ok
[INFO] [stdout] test the_websocket_path_carries_every_field_too ... ok
[INFO] [stdout] test reduce_only_is_carried_on_a_derivatives_client_and_refused_on_a_spot_one ... ok
[INFO] [stdout] test every_order_field_is_either_carried_or_refused_but_never_dropped ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/golden.rs (/opt/rustwide/target/debug/build/wickra-exchange-core/791f815cddbce2d8/out/golden-791f815cddbce2d8)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test golden_sma_cross_frictionless ... FAILED
[INFO] [stdout] test golden_sma_cross_with_costs ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- golden_sma_cross_frictionless stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'golden_sma_cross_frictionless' (2263) panicked at tests/golden.rs:24:52:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b8435529e71 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b8435529e71 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::trace_unsynchronized::<std[617be2ca0a6fd877]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b8435529e71 - std[617be2ca0a6fd877]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b8435529e71 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b843553e65a - <core[a373ad73a504971]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b843553e65a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    6:     0x5b843552e08c - core[a373ad73a504971]::io::write::default_write_fmt::<alloc[2e1b2a31b91974c5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x5b843552e08c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x5b8435505f76 - <std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b8435505f76 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:289:27
[INFO] [stdout]   10:     0x5b84355221a9 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:313:9
[INFO] [stdout]   11:     0x5b8435462480 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   12:     0x5b8435462480 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x5b8435522362 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   14:     0x5b8435522362 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:819:13
[INFO] [stdout]   15:     0x5b8435506022 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:685:13
[INFO] [stdout]   16:     0x5b84354feba9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b8435506c2d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:676:5
[INFO] [stdout]   18:     0x5b843553ee0c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b843553eb62 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/result.rs:1870:5
[INFO] [stdout]   20:     0x5b8435451d15 - <core[a373ad73a504971]::result::Result<alloc[2e1b2a31b91974c5]::string::String, core[a373ad73a504971]::io::error::Error>>::unwrap
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b8435451d15 - golden[6cb55207e3c11a02]::read_json
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:24:52
[INFO] [stdout]   22:     0x5b8435450186 - golden[6cb55207e3c11a02]::run_case
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:33:17
[INFO] [stdout]   23:     0x5b8435451f12 - golden[6cb55207e3c11a02]::golden_sma_cross_frictionless
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:101:5
[INFO] [stdout]   24:     0x5b843544fa07 - golden[6cb55207e3c11a02]::golden_sma_cross_frictionless::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:100:35
[INFO] [stdout]   25:     0x5b8435455876 - <golden[6cb55207e3c11a02]::golden_sma_cross_frictionless::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b84354558cb - <fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   27:     0x5b84354558cb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:701:18
[INFO] [stdout]   28:     0x5b8435462aa5 - test[aada8e7e76ba119b]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:74
[INFO] [stdout]   29:     0x5b8435462aa5 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   30:     0x5b8435462aa5 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   31:     0x5b8435462aa5 - std[617be2ca0a6fd877]::panicking::catch_unwind::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   32:     0x5b8435462aa5 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   33:     0x5b8435462aa5 - test[aada8e7e76ba119b]::run_test_in_process
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:27
[INFO] [stdout]   34:     0x5b8435462aa5 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:645:43
[INFO] [stdout]   35:     0x5b843545c394 - test[aada8e7e76ba119b]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:675:41
[INFO] [stdout]   36:     0x5b843545c394 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   37:     0x5b8435465b32 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   38:     0x5b8435465b32 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   39:     0x5b8435465b32 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   40:     0x5b8435465b32 - std[617be2ca0a6fd877]::panicking::catch_unwind::<(), core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   41:     0x5b8435465b32 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   42:     0x5b8435465b32 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   43:     0x5b8435465b32 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x5b843552936f - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn core[a373ad73a504971]::ops::function::FnOnce<(), Output = ()> + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2314:9
[INFO] [stdout]   45:     0x5b843552936f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   46:     0x7f709ab4edfa - <unknown>
[INFO] [stdout]   47:     0x7f709abe23d4 - clone
[INFO] [stdout]   48:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- golden_sma_cross_with_costs stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'golden_sma_cross_with_costs' (2264) panicked at tests/golden.rs:24:52:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b8435529e71 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b8435529e71 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::trace_unsynchronized::<std[617be2ca0a6fd877]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b8435529e71 - std[617be2ca0a6fd877]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b8435529e71 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b843553e65a - <core[a373ad73a504971]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b843553e65a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    6:     0x5b843552e08c - core[a373ad73a504971]::io::write::default_write_fmt::<alloc[2e1b2a31b91974c5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x5b843552e08c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x5b8435505f76 - <std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b8435505f76 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:289:27
[INFO] [stdout]   10:     0x5b84355221a9 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:313:9
[INFO] [stdout]   11:     0x5b8435462480 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   12:     0x5b8435462480 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x5b8435522362 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   14:     0x5b8435522362 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:819:13
[INFO] [stdout]   15:     0x5b8435506022 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:685:13
[INFO] [stdout]   16:     0x5b84354feba9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b8435506c2d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:676:5
[INFO] [stdout]   18:     0x5b843553ee0c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b843553eb62 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/result.rs:1870:5
[INFO] [stdout]   20:     0x5b8435451d15 - <core[a373ad73a504971]::result::Result<alloc[2e1b2a31b91974c5]::string::String, core[a373ad73a504971]::io::error::Error>>::unwrap
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b8435451d15 - golden[6cb55207e3c11a02]::read_json
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:24:52
[INFO] [stdout]   22:     0x5b8435450186 - golden[6cb55207e3c11a02]::run_case
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:33:17
[INFO] [stdout]   23:     0x5b8435451ef2 - golden[6cb55207e3c11a02]::golden_sma_cross_with_costs
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:106:5
[INFO] [stdout]   24:     0x5b843544f9d7 - golden[6cb55207e3c11a02]::golden_sma_cross_with_costs::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/golden.rs:105:33
[INFO] [stdout]   25:     0x5b8435455856 - <golden[6cb55207e3c11a02]::golden_sma_cross_with_costs::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5b84354558cb - <fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   27:     0x5b84354558cb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:701:18
[INFO] [stdout]   28:     0x5b8435462aa5 - test[aada8e7e76ba119b]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:74
[INFO] [stdout]   29:     0x5b8435462aa5 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   30:     0x5b8435462aa5 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   31:     0x5b8435462aa5 - std[617be2ca0a6fd877]::panicking::catch_unwind::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   32:     0x5b8435462aa5 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   33:     0x5b8435462aa5 - test[aada8e7e76ba119b]::run_test_in_process
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:27
[INFO] [stdout]   34:     0x5b8435462aa5 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:645:43
[INFO] [stdout]   35:     0x5b843545c394 - test[aada8e7e76ba119b]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:675:41
[INFO] [stdout]   36:     0x5b843545c394 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   37:     0x5b8435465b32 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   38:     0x5b8435465b32 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   39:     0x5b8435465b32 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   40:     0x5b8435465b32 - std[617be2ca0a6fd877]::panicking::catch_unwind::<(), core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   41:     0x5b8435465b32 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   42:     0x5b8435465b32 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   43:     0x5b8435465b32 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x5b843552936f - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn core[a373ad73a504971]::ops::function::FnOnce<(), Output = ()> + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2314:9
[INFO] [stdout]   45:     0x5b843552936f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   46:     0x7f709ab4edfa - <unknown>
[INFO] [stdout]   47:     0x7f709abe23d4 - clone
[INFO] [stdout]   48:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     golden_sma_cross_frictionless
[INFO] [stdout]     golden_sma_cross_with_costs
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test golden`
[INFO] running `Command { std: "docker" "inspect" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a", kill_on_drop: false }`
[INFO] [stdout] 3cd9d375b79bdc1283703d97341aae6b95d7b671079baa1fd76744162e8d537a
