[INFO] fetching crate rs-voice-toolkit-tts 0.16.0... [INFO] testing rs-voice-toolkit-tts-0.16.0 against try#c2e32f1c9652b13ed99608599c1e855462f421f3 for pr-146098-8 [INFO] extracting crate rs-voice-toolkit-tts 0.16.0 into /workspace/builds/worker-1-tc2/source [INFO] started tweaking crates.io crate rs-voice-toolkit-tts 0.16.0 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate rs-voice-toolkit-tts 0.16.0 [INFO] tweaked toml for crates.io crate rs-voice-toolkit-tts 0.16.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate rs-voice-toolkit-tts 0.16.0 on toolchain c2e32f1c9652b13ed99608599c1e855462f421f3 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate rs-voice-toolkit-tts 0.16.0 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" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ae6b57628cc292e3eabec580301e9ff7a1cd127c4317234adaa70066d48790ff [INFO] running `Command { std: "docker" "start" "-a" "ae6b57628cc292e3eabec580301e9ff7a1cd127c4317234adaa70066d48790ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ae6b57628cc292e3eabec580301e9ff7a1cd127c4317234adaa70066d48790ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ae6b57628cc292e3eabec580301e9ff7a1cd127c4317234adaa70066d48790ff", kill_on_drop: false }` [INFO] [stdout] ae6b57628cc292e3eabec580301e9ff7a1cd127c4317234adaa70066d48790ff [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 74fac5f663799dbac8b03d9b73f25c6a89a8835e5609b36f0b596f1b917f6a6e [INFO] running `Command { std: "docker" "start" "-a" "74fac5f663799dbac8b03d9b73f25c6a89a8835e5609b36f0b596f1b917f6a6e", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.101 [INFO] [stderr] Compiling libc v0.2.175 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling cfg-if v1.0.3 [INFO] [stderr] Compiling rustix v1.0.8 [INFO] [stderr] Compiling linux-raw-sys v0.9.4 [INFO] [stderr] Compiling thiserror v2.0.16 [INFO] [stderr] Compiling bitflags v2.9.2 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling env_home v0.1.0 [INFO] [stderr] Compiling bytes v1.10.1 [INFO] [stderr] Compiling log v0.4.27 [INFO] [stderr] Compiling lock_api v0.4.13 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Compiling signal-hook-registry v1.4.6 [INFO] [stderr] Compiling mio v1.0.4 [INFO] [stderr] Compiling socket2 v0.6.0 [INFO] [stderr] Compiling parking_lot v0.12.4 [INFO] [stderr] Compiling which v8.0.0 [INFO] [stderr] Compiling thiserror-impl v2.0.16 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio v1.47.1 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling rs-voice-toolkit-tts v0.16.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.72s [INFO] running `Command { std: "docker" "inspect" "74fac5f663799dbac8b03d9b73f25c6a89a8835e5609b36f0b596f1b917f6a6e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "74fac5f663799dbac8b03d9b73f25c6a89a8835e5609b36f0b596f1b917f6a6e", kill_on_drop: false }` [INFO] [stdout] 74fac5f663799dbac8b03d9b73f25c6a89a8835e5609b36f0b596f1b917f6a6e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 153b7ef10517390a5ea6cf7603fe4fc157e21bb55b27248e66af7f2ba75028e6 [INFO] running `Command { std: "docker" "start" "-a" "153b7ef10517390a5ea6cf7603fe4fc157e21bb55b27248e66af7f2ba75028e6", kill_on_drop: false }` [INFO] [stderr] Compiling rs-voice-toolkit-tts v0.16.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.07s [INFO] running `Command { std: "docker" "inspect" "153b7ef10517390a5ea6cf7603fe4fc157e21bb55b27248e66af7f2ba75028e6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "153b7ef10517390a5ea6cf7603fe4fc157e21bb55b27248e66af7f2ba75028e6", kill_on_drop: false }` [INFO] [stdout] 153b7ef10517390a5ea6cf7603fe4fc157e21bb55b27248e66af7f2ba75028e6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] ce1de4647778d2ec25a03c37bf645515f8b20d795d9915203014f3621e86792f [INFO] running `Command { std: "docker" "start" "-a" "ce1de4647778d2ec25a03c37bf645515f8b20d795d9915203014f3621e86792f", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rs_voice_toolkit_tts-24a993f9a4eb258d) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test tests::test_tts_service_creation ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests rs_voice_toolkit_tts [INFO] [stdout] [INFO] [stdout] running 28 tests [INFO] [stdout] test src/lib.rs - (line 170) ... FAILED [INFO] [stdout] test src/lib.rs - TtsConfig (line 336) ... ok [INFO] [stdout] test src/lib.rs - IndexTtsEngine (line 926) ... FAILED [INFO] [stdout] test src/lib.rs - IndexTtsEngine (line 952) ... ok [INFO] [stdout] test src/lib.rs - TtsConfig (line 317) ... ok [INFO] [stdout] test src/lib.rs - TtsConfig::pitch (line 496) ... ok [INFO] [stdout] test src/lib.rs - TtsConfig::executable_path (line 382) ... ok [INFO] [stdout] test src/lib.rs - TtsConfig::language (line 406) ... ok [INFO] [stdout] test src/lib.rs - TtsConfig::sample_rate (line 449) ... ok [INFO] [stdout] test src/lib.rs - TtsEngine::engine_type (line 884) ... FAILED [INFO] [stdout] test src/lib.rs - TtsEngine::supported_languages (line 843) ... FAILED [INFO] [stdout] test src/lib.rs - (line 59) ... FAILED [INFO] [stdout] test src/lib.rs - TtsConfig::speaker (line 427) ... ok [INFO] [stdout] test src/lib.rs - (line 31) ... ok [INFO] [stdout] test src/lib.rs - TtsConfig::speed (line 473) ... ok [INFO] [stdout] test src/lib.rs - (line 91) ... ok [INFO] [stdout] test src/lib.rs - TtsError (line 225) ... FAILED [INFO] [stdout] test src/lib.rs - TtsEngine (line 635) ... ok [INFO] [stdout] test src/lib.rs - TtsEngine::is_available (line 803) ... ok [INFO] [stdout] test src/lib.rs - TtsEngine::synthesize_to_file (line 753) ... ok [INFO] [stdout] test src/lib.rs - TtsService (line 1196) ... ok [INFO] [stdout] test src/lib.rs - TtsEngineType (line 546) ... ok [INFO] [stdout] test src/lib.rs - TtsService (line 1165) ... ok [INFO] [stdout] test src/lib.rs - TtsEngine::synthesize (line 702) ... ok [INFO] [stdout] test src/lib.rs - TtsError::AudioGenerationError (line 272) ... ok [INFO] [stdout] test src/lib.rs - TtsError::EngineExecutionError (line 290) ... ok [INFO] [stdout] test src/lib.rs - TtsError::ConfigError (line 254) ... ok [INFO] [stdout] test src/lib.rs - TtsService (line 1221) ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- src/lib.rs - (line 170) stdout ---- [INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks [INFO] [stdout] --> src/lib.rs:176:38 [INFO] [stdout] | [INFO] [stdout] 171 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_lib_rs_170_0() { [INFO] [stdout] | ----------------------------------- this is not `async` [INFO] [stdout] ... [INFO] [stdout] 176 | match service.text_to_speech("测试文本").await { [INFO] [stdout] | ^^^^^ only allowed inside `async` functions and blocks [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/lib.rs:177:52 [INFO] [stdout] | [INFO] [stdout] 177 | Ok(audio_data) => println!("合成成功,音频大小: {} 字节", audio_data.len()), [INFO] [stdout] | ^^^^^^^^^^ cannot infer type [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0282, E0728. [INFO] [stdout] For more information about an error, try `rustc --explain E0282`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/lib.rs - IndexTtsEngine (line 926) stdout ---- [INFO] [stdout] error[E0599]: no method named `synthesize` found for struct `IndexTtsEngine` in the current scope [INFO] [stdout] --> src/lib.rs:944:29 [INFO] [stdout] | [INFO] [stdout] 944 | let audio_data = engine.synthesize(text).await?; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/workdir/src/lib.rs:728:14 [INFO] [stdout] | [INFO] [stdout] 728 | async fn synthesize(&self, text: &str) -> Result, TtsError>; [INFO] [stdout] | ---------- the method is available for `IndexTtsEngine` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] help: there is a method `synthesize_to_file` with a similar name, but with different arguments [INFO] [stdout] --> /opt/rustwide/workdir/src/lib.rs:1087:5 [INFO] [stdout] | [INFO] [stdout] 1087 | / pub async fn synthesize_to_file>( [INFO] [stdout] 1088 | | &self, [INFO] [stdout] 1089 | | text: &str, [INFO] [stdout] 1090 | | output_path: P, [INFO] [stdout] 1091 | | ) -> Result<(), TtsError> { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] help: trait `TtsEngine` which provides `synthesize` is implemented but not in scope; perhaps you want to import it [INFO] [stdout] | [INFO] [stdout] 926 + use crate::rs_voice_toolkit_tts::TtsEngine; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/lib.rs:944:9 [INFO] [stdout] | [INFO] [stdout] 944 | let audio_data = engine.synthesize(text).await?; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 945 | println!("生成音频数据大小: {} 字节", audio_data.len()); [INFO] [stdout] | ---------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `audio_data` an explicit type [INFO] [stdout] | [INFO] [stdout] 944 | let audio_data: /* Type */ = engine.synthesize(text).await?; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0282, E0599. [INFO] [stdout] For more information about an error, try `rustc --explain E0282`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/lib.rs - TtsEngine::engine_type (line 884) stdout ---- [INFO] [stdout] error[E0412]: cannot find type `TtsError` in this scope [INFO] [stdout] --> src/lib.rs:896:56 [INFO] [stdout] | [INFO] [stdout] 896 | async fn synthesize(&self, _: &str) -> Result, TtsError> { Ok(vec![]) } [INFO] [stdout] | ^^^^^^^^ not found in this scope [INFO] [stdout] | [INFO] [stdout] help: consider importing this enum [INFO] [stdout] | [INFO] [stdout] 883 + use rs_voice_toolkit_tts::TtsError; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `TtsError` in this scope [INFO] [stdout] --> src/lib.rs:897:80 [INFO] [stdout] | [INFO] [stdout] 897 | async fn synthesize_to_file(&self, _: &str, _: &std::path::Path) -> Result<(), TtsError> { Ok(()) } [INFO] [stdout] | ^^^^^^^^ not found in this scope [INFO] [stdout] | [INFO] [stdout] help: consider importing this enum [INFO] [stdout] | [INFO] [stdout] 883 + use rs_voice_toolkit_tts::TtsError; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0412`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/lib.rs - TtsEngine::supported_languages (line 843) stdout ---- [INFO] [stdout] error[E0412]: cannot find type `TtsError` in this scope [INFO] [stdout] --> src/lib.rs:859:56 [INFO] [stdout] | [INFO] [stdout] 859 | async fn synthesize(&self, _: &str) -> Result, TtsError> { Ok(vec![]) } [INFO] [stdout] | ^^^^^^^^ not found in this scope [INFO] [stdout] | [INFO] [stdout] help: consider importing this enum [INFO] [stdout] | [INFO] [stdout] 842 + use rs_voice_toolkit_tts::TtsError; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `TtsError` in this scope [INFO] [stdout] --> src/lib.rs:860:80 [INFO] [stdout] | [INFO] [stdout] 860 | async fn synthesize_to_file(&self, _: &str, _: &std::path::Path) -> Result<(), TtsError> { Ok(()) } [INFO] [stdout] | ^^^^^^^^ not found in this scope [INFO] [stdout] | [INFO] [stdout] help: consider importing this enum [INFO] [stdout] | [INFO] [stdout] 842 + use rs_voice_toolkit_tts::TtsError; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] error: aborting due to 2 previous errors [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0412`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] ---- src/lib.rs - (line 59) stdout ---- [INFO] [stdout] Test executable failed (exit status: 1). [INFO] [stdout] [INFO] [stdout] stderr: [INFO] [stdout] Error: ConfigError("找不到 index-tts 可执行文件,请设置 PATH 或配置 executable_path") [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] ---- src/lib.rs - TtsError (line 225) stdout ---- [INFO] [stdout] error[E0425]: cannot find function `some_tts_operation` in this scope [INFO] [stdout] --> src/lib.rs:229:7 [INFO] [stdout] | [INFO] [stdout] 229 | match some_tts_operation() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] error: aborting due to 1 previous error [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0425`. [INFO] [stdout] Couldn't compile the test. [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] src/lib.rs - (line 170) [INFO] [stdout] src/lib.rs - (line 59) [INFO] [stdout] src/lib.rs - IndexTtsEngine (line 926) [INFO] [stdout] src/lib.rs - TtsEngine::engine_type (line 884) [INFO] [stdout] src/lib.rs - TtsEngine::supported_languages (line 843) [INFO] [stdout] src/lib.rs - TtsError (line 225) [INFO] [stdout] [INFO] [stdout] test result: FAILED. 22 passed; 6 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.27s [INFO] [stdout] [INFO] [stderr] error: doctest failed, to rerun pass `--doc` [INFO] running `Command { std: "docker" "inspect" "ce1de4647778d2ec25a03c37bf645515f8b20d795d9915203014f3621e86792f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ce1de4647778d2ec25a03c37bf645515f8b20d795d9915203014f3621e86792f", kill_on_drop: false }` [INFO] [stdout] ce1de4647778d2ec25a03c37bf645515f8b20d795d9915203014f3621e86792f