[INFO] cloning repository https://github.com/simon-frankau/hashiwokakero-solver [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/simon-frankau/hashiwokakero-solver" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimon-frankau%2Fhashiwokakero-solver", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimon-frankau%2Fhashiwokakero-solver'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] dc45812880916dc7c4ca129eb7781c6851900d8e [INFO] testing simon-frankau/hashiwokakero-solver against master#cdb45c87e2cd43495379f7e867e3cc15dcee9f93 for pr-145838-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsimon-frankau%2Fhashiwokakero-solver" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/simon-frankau/hashiwokakero-solver [INFO] finished tweaking git repo https://github.com/simon-frankau/hashiwokakero-solver [INFO] tweaked toml for git repo https://github.com/simon-frankau/hashiwokakero-solver written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/simon-frankau/hashiwokakero-solver on toolchain cdb45c87e2cd43495379f7e867e3cc15dcee9f93 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/simon-frankau/hashiwokakero-solver 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" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded predicates v2.1.0 [INFO] [stderr] Downloaded os_str_bytes v4.2.0 [INFO] [stderr] Downloaded termtree v0.2.3 [INFO] [stderr] Downloaded assert_cmd v2.0.2 [INFO] [stderr] Downloaded anyhow v1.0.44 [INFO] [stderr] Downloaded predicates-tree v1.0.4 [INFO] [stderr] Downloaded clap_derive v3.0.0-beta.5 [INFO] [stderr] Downloaded clap v3.0.0-beta.5 [INFO] [stderr] Downloaded libc v0.2.106 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 39a6c450882e2b57a073fb36be2fcdfc8478f69498f05f9fb3161b3c87ac445a [INFO] running `Command { std: "docker" "start" "-a" "39a6c450882e2b57a073fb36be2fcdfc8478f69498f05f9fb3161b3c87ac445a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "39a6c450882e2b57a073fb36be2fcdfc8478f69498f05f9fb3161b3c87ac445a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "39a6c450882e2b57a073fb36be2fcdfc8478f69498f05f9fb3161b3c87ac445a", kill_on_drop: false }` [INFO] [stdout] 39a6c450882e2b57a073fb36be2fcdfc8478f69498f05f9fb3161b3c87ac445a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f7d4a20f516697f21e556b1ae96550733480c0a5905609332d2d518c7af2f3ce [INFO] running `Command { std: "docker" "start" "-a" "f7d4a20f516697f21e556b1ae96550733480c0a5905609332d2d518c7af2f3ce", kill_on_drop: false }` [INFO] [stderr] Compiling syn v1.0.81 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling libc v0.2.106 [INFO] [stderr] Compiling unicase v2.6.0 [INFO] [stderr] Compiling unicode-segmentation v1.8.0 [INFO] [stderr] Compiling unicode-width v0.1.9 [INFO] [stderr] Compiling anyhow v1.0.44 [INFO] [stderr] Compiling hashbrown v0.11.2 [INFO] [stderr] Compiling termcolor v1.1.2 [INFO] [stderr] Compiling indexmap v1.7.0 [INFO] [stderr] Compiling os_str_bytes v4.2.0 [INFO] [stderr] Compiling textwrap v0.14.2 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling thiserror-impl v1.0.30 [INFO] [stderr] Compiling clap_derive v3.0.0-beta.5 [INFO] [stderr] Compiling thiserror v1.0.30 [INFO] [stderr] Compiling clap v3.0.0-beta.5 [INFO] [stderr] Compiling hashiwokakero-solver v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:461:13 [INFO] [stdout] | [INFO] [stdout] 461 | let mut near_range = m.get_island_mut(x, y).bridge_mut(*dir); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/main.rs:402:20 [INFO] [stdout] | [INFO] [stdout] 402 | fn island_iter(&self) -> IslandIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 402 | fn island_iter(&self) -> IslandIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.52s [INFO] running `Command { std: "docker" "inspect" "f7d4a20f516697f21e556b1ae96550733480c0a5905609332d2d518c7af2f3ce", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f7d4a20f516697f21e556b1ae96550733480c0a5905609332d2d518c7af2f3ce", kill_on_drop: false }` [INFO] [stdout] f7d4a20f516697f21e556b1ae96550733480c0a5905609332d2d518c7af2f3ce [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 414670faa22ea1b50f57f0f68591b5477e73d5cc3b6cb792a9b93b621645d15f [INFO] running `Command { std: "docker" "start" "-a" "414670faa22ea1b50f57f0f68591b5477e73d5cc3b6cb792a9b93b621645d15f", kill_on_drop: false }` [INFO] [stderr] Compiling regex-syntax v0.6.25 [INFO] [stderr] Compiling doc-comment v0.3.3 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling predicates-core v1.0.2 [INFO] [stderr] Compiling regex-automata v0.1.10 [INFO] [stderr] Compiling termtree v0.2.3 [INFO] [stderr] Compiling normalize-line-endings v0.3.0 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling float-cmp v0.9.0 [INFO] [stderr] Compiling wait-timeout v0.2.0 [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:461:13 [INFO] [stdout] | [INFO] [stdout] 461 | let mut near_range = m.get_island_mut(x, y).bridge_mut(*dir); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/main.rs:402:20 [INFO] [stdout] | [INFO] [stdout] 402 | fn island_iter(&self) -> IslandIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 402 | fn island_iter(&self) -> IslandIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling itertools v0.10.3 [INFO] [stderr] Compiling predicates-tree v1.0.4 [INFO] [stderr] Compiling bstr v0.2.17 [INFO] [stderr] Compiling regex v1.5.4 [INFO] [stderr] Compiling predicates v2.1.0 [INFO] [stderr] Compiling assert_cmd v2.0.2 [INFO] [stderr] Compiling hashiwokakero-solver v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:461:13 [INFO] [stdout] | [INFO] [stdout] 461 | let mut near_range = m.get_island_mut(x, y).bridge_mut(*dir); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/main.rs:402:20 [INFO] [stdout] | [INFO] [stdout] 402 | fn island_iter(&self) -> IslandIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 402 | fn island_iter(&self) -> IslandIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 8.34s [INFO] running `Command { std: "docker" "inspect" "414670faa22ea1b50f57f0f68591b5477e73d5cc3b6cb792a9b93b621645d15f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "414670faa22ea1b50f57f0f68591b5477e73d5cc3b6cb792a9b93b621645d15f", kill_on_drop: false }` [INFO] [stdout] 414670faa22ea1b50f57f0f68591b5477e73d5cc3b6cb792a9b93b621645d15f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 1945902c33e96b66452cd7ba84902fc3dcab81633d7cb71cf0cc207c96581fc3 [INFO] running `Command { std: "docker" "start" "-a" "1945902c33e96b66452cd7ba84902fc3dcab81633d7cb71cf0cc207c96581fc3", kill_on_drop: false }` [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:461:13 [INFO] [stderr] | [INFO] [stderr] 461 | let mut near_range = m.get_island_mut(x, y).bridge_mut(*dir); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/main.rs:402:20 [INFO] [stderr] | [INFO] [stderr] 402 | fn island_iter(&self) -> IslandIterator { [INFO] [stderr] | ^^^^^ ^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 402 | fn island_iter(&self) -> IslandIterator<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: `hashiwokakero-solver` (bin "hashiwokakero-solver" test) generated 2 warnings (run `cargo fix --bin "hashiwokakero-solver" --tests` to apply 2 suggestions) [INFO] [stderr] warning: `hashiwokakero-solver` (bin "hashiwokakero-solver") generated 2 warnings (2 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.09s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/hashiwokakero_solver-d3acfa13801daa62) [INFO] [stdout] [INFO] [stdout] running 31 tests [INFO] [stdout] test tests::test_apply_valence_constraints_full ... ok [INFO] [stdout] test tests::test_apply_valence_constraints_failure ... ok [INFO] [stdout] test tests::test_generate_distributions ... ok [INFO] [stdout] test tests::test_only_commments_fails ... ok [INFO] [stdout] test tests::test_completely_empty_fails ... ok [INFO] [stdout] test tests::test_apply_valence_constraints_partial ... ok [INFO] [stdout] test tests::test_paint_horizontal ... ok [INFO] [stdout] test tests::test_paint_vertical ... ok [INFO] [stdout] test tests::test_overpaint ... ok [INFO] [stdout] test tests::test_find_neighbour ... ok [INFO] [stdout] test tests::test_parse_print_round_trip ... ok [INFO] [stdout] test tests::test_propagate_constraints_failure ... ok [INFO] [stdout] test tests::test_propagate_constraints ... ok [INFO] [stdout] test tests::test_same_paint_noop ... ok [INFO] [stdout] test tests::test_single_cell_print ... ok [INFO] [stdout] test tests::test_small_parse ... ok [INFO] [stdout] test tests::test_small_print ... ok [INFO] [stdout] test tests::test_solve_simple ... ok [INFO] [stdout] test tests::test_solve_simple_stuck ... ok [INFO] [stdout] test tests::test_solve_simple_no_solution ... ok [INFO] [stdout] test tests::test_single_cell_parse ... ok [INFO] [stdout] test tests::test_solve_single_component ... ok [INFO] [stdout] test tests::test_solve_split_no_solution ... ok [INFO] [stdout] test tests::test_unexpected_chars_fails ... ok [INFO] [stdout] test tests::test_solve_split ... ok [INFO] [stdout] test tests::test_unequal_lines_fails ... ok [INFO] [stdout] test tests::test_zero_paint_noop ... ok [INFO] [stdout] test tests::test_solve_single_component_no_solutions ... ok [INFO] [stdout] test tests::test_paint_removal_fails - should panic ... ok [INFO] [stdout] test tests::test_paint_crossing_fails - should panic ... ok [INFO] [stdout] test tests::test_paint_off_edge_fails - should panic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/solver.rs (/opt/rustwide/target/debug/deps/solver-242f32038ff6fdde) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test test_cli_success ... ok [INFO] [stdout] test test_cli_parse_error ... ok [INFO] [stdout] test test_cli_max_bridges_1_no_solutions ... ok [INFO] [stdout] test test_cli_max_bridges_1_success ... ok [INFO] [stdout] test test_cli_no_solutions ... ok [INFO] [stdout] test test_cli_input_flag ... ok [INFO] [stdout] test test_cli_output_flag ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "1945902c33e96b66452cd7ba84902fc3dcab81633d7cb71cf0cc207c96581fc3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1945902c33e96b66452cd7ba84902fc3dcab81633d7cb71cf0cc207c96581fc3", kill_on_drop: false }` [INFO] [stdout] 1945902c33e96b66452cd7ba84902fc3dcab81633d7cb71cf0cc207c96581fc3