[INFO] crate rust-monster 0.1.0 is already in cache [INFO] testing rust-monster-0.1.0 against beta-2019-09-28 for beta-1.39-1 [INFO] extracting crate rust-monster 0.1.0 into work/builds/worker-6/source [INFO] validating manifest of crates.io crate rust-monster 0.1.0 on toolchain beta-2019-09-28 [INFO] running `"/big/crater/work/cargo-home/bin/cargo" "+beta-2019-09-28" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking crates.io crate rust-monster 0.1.0 [INFO] finished tweaking crates.io crate rust-monster 0.1.0 [INFO] tweaked toml for crates.io crate rust-monster 0.1.0 written to work/builds/worker-6/source/Cargo.toml [INFO] running `"/big/crater/work/cargo-home/bin/cargo" "+beta-2019-09-28" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/big/crater/work/cargo-home/bin/cargo" "+beta-2019-09-28" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/big/crater/work/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/big/crater/work/builds/worker-6/source:/opt/rustwide/workdir:ro,Z" "-v" "/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2019-09-28" "build" "--frozen"` [INFO] [stdout] 5cca50a89c97793a6573de5b402217d599c77f18316c0f8b8ab20a5e51f0a251 [INFO] running `"docker" "start" "-a" "5cca50a89c97793a6573de5b402217d599c77f18316c0f8b8ab20a5e51f0a251"` [INFO] [stderr] Compiling rust-monster v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/ga/ga_core.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | / /// Bit Flags for Genetic Algorithm Configuration [INFO] [stderr] 6 | | /// [INFO] [stderr] 7 | | /// [INFO] [stderr] | |___^ [INFO] [stderr] 8 | / bitflags! [INFO] [stderr] 9 | | { [INFO] [stderr] 10 | | pub flags GAFlags: u32 [INFO] [stderr] 11 | | { [INFO] [stderr] 12 | | const DEBUG_FLAG = 0b00000001 [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [INFO] [stderr] | |_- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/ga/ga_core.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / bitflags! [INFO] [stderr] 9 | | { [INFO] [stderr] 10 | | pub flags GAFlags: u32 [INFO] [stderr] 11 | | { [INFO] [stderr] 12 | | const DEBUG_FLAG = 0b00000001 [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/ga/ga_core.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / bitflags! [INFO] [stderr] 9 | | { [INFO] [stderr] 10 | | pub flags GAFlags: u32 [INFO] [stderr] 11 | | { [INFO] [stderr] 12 | | const DEBUG_FLAG = 0b00000001 [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_core.rs:82:30 [INFO] [stderr] | [INFO] [stderr] 82 | fn config(&mut self) -> &GAConfig; [INFO] [stderr] | ^^^^^^^^ help: use `dyn`: `dyn GAConfig` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_simple.rs:83:37 [INFO] [stderr] | [INFO] [stderr] 83 | factory: Option<&mut GAFactory>, [INFO] [stderr] | ^^^^^^^^^^^^ help: use `dyn`: `dyn GAFactory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_simple.rs:113:30 [INFO] [stderr] | [INFO] [stderr] 113 | fn config(&mut self) -> &GAConfig [INFO] [stderr] | ^^^^^^^^ help: use `dyn`: `dyn GAConfig` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:130:26 [INFO] [stderr] | [INFO] [stderr] 130 | score_selection: &'a GAScoreTypeBasedSelection [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:135:23 [INFO] [stderr] | [INFO] [stderr] 135 | pub fn new(s: &'a GAScoreTypeBasedSelection) -> GARankSelector<'a, T> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:215:26 [INFO] [stderr] | [INFO] [stderr] 215 | score_selection: &'a GAScoreTypeBasedSelection, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:222:23 [INFO] [stderr] | [INFO] [stderr] 222 | pub fn new(s: &'a GAScoreTypeBasedSelection, p_size: usize) -> GARouletteWheelSelector<'a, T> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:361:26 [INFO] [stderr] | [INFO] [stderr] 361 | score_selection: &'a GAScoreTypeBasedSelection, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:367:23 [INFO] [stderr] | [INFO] [stderr] 367 | pub fn new(s: &'a GAScoreTypeBasedSelection, p_size: usize) -> GATournamentSelector<'a, T> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `population` [INFO] [stderr] --> src/ga/ga_selectors.rs:42:26 [INFO] [stderr] | [INFO] [stderr] 42 | fn update(&mut self, population: &mut GAPopulation) {} [INFO] [stderr] | ^^^^^^^^^^ help: consider prefixing with an underscore: `_population` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `pMutation` should have a snake case name [INFO] [stderr] --> src/ga/ga_core.rs:40:26 [INFO] [stderr] | [INFO] [stderr] 40 | fn mutate(&mut self, pMutation : f32); [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `p_mutation` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.52s [INFO] running `"docker" "inspect" "5cca50a89c97793a6573de5b402217d599c77f18316c0f8b8ab20a5e51f0a251"` [INFO] running `"docker" "rm" "-f" "5cca50a89c97793a6573de5b402217d599c77f18316c0f8b8ab20a5e51f0a251"` [INFO] [stdout] 5cca50a89c97793a6573de5b402217d599c77f18316c0f8b8ab20a5e51f0a251 [INFO] running `"docker" "create" "-v" "/big/crater/work/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/big/crater/work/builds/worker-6/source:/opt/rustwide/workdir:ro,Z" "-v" "/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2019-09-28" "test" "--frozen" "--no-run"` [INFO] [stdout] c654e19bb7462250ca6f97608709d9c006b0e2fba6873607480139a2394929f6 [INFO] running `"docker" "start" "-a" "c654e19bb7462250ca6f97608709d9c006b0e2fba6873607480139a2394929f6"` [INFO] [stderr] Compiling rust-monster v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/ga/ga_core.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | / /// Bit Flags for Genetic Algorithm Configuration [INFO] [stderr] 6 | | /// [INFO] [stderr] 7 | | /// [INFO] [stderr] | |___^ [INFO] [stderr] 8 | / bitflags! [INFO] [stderr] 9 | | { [INFO] [stderr] 10 | | pub flags GAFlags: u32 [INFO] [stderr] 11 | | { [INFO] [stderr] 12 | | const DEBUG_FLAG = 0b00000001 [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [INFO] [stderr] | |_- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> tests/lib.rs:106:76 [INFO] [stderr] | [INFO] [stderr] 106 | ... Some(&mut factory as &mut GAFactory), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAFactory` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/ga/ga_core.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / bitflags! [INFO] [stderr] 9 | | { [INFO] [stderr] 10 | | pub flags GAFlags: u32 [INFO] [stderr] 11 | | { [INFO] [stderr] 12 | | const DEBUG_FLAG = 0b00000001 [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'try': use the `?` operator instead [INFO] [stderr] --> src/ga/ga_core.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | / bitflags! [INFO] [stderr] 9 | | { [INFO] [stderr] 10 | | pub flags GAFlags: u32 [INFO] [stderr] 11 | | { [INFO] [stderr] 12 | | const DEBUG_FLAG = 0b00000001 [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_core.rs:82:30 [INFO] [stderr] | [INFO] [stderr] 82 | fn config(&mut self) -> &GAConfig; [INFO] [stderr] | ^^^^^^^^ help: use `dyn`: `dyn GAConfig` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_simple.rs:83:37 [INFO] [stderr] | [INFO] [stderr] 83 | factory: Option<&mut GAFactory>, [INFO] [stderr] | ^^^^^^^^^^^^ help: use `dyn`: `dyn GAFactory` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_simple.rs:113:30 [INFO] [stderr] | [INFO] [stderr] 113 | fn config(&mut self) -> &GAConfig [INFO] [stderr] | ^^^^^^^^ help: use `dyn`: `dyn GAConfig` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:130:26 [INFO] [stderr] | [INFO] [stderr] 130 | score_selection: &'a GAScoreTypeBasedSelection [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:135:23 [INFO] [stderr] | [INFO] [stderr] 135 | pub fn new(s: &'a GAScoreTypeBasedSelection) -> GARankSelector<'a, T> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:215:26 [INFO] [stderr] | [INFO] [stderr] 215 | score_selection: &'a GAScoreTypeBasedSelection, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:222:23 [INFO] [stderr] | [INFO] [stderr] 222 | pub fn new(s: &'a GAScoreTypeBasedSelection, p_size: usize) -> GARouletteWheelSelector<'a, T> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:361:26 [INFO] [stderr] | [INFO] [stderr] 361 | score_selection: &'a GAScoreTypeBasedSelection, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/ga/ga_selectors.rs:367:23 [INFO] [stderr] | [INFO] [stderr] 367 | pub fn new(s: &'a GAScoreTypeBasedSelection, p_size: usize) -> GATournamentSelector<'a, T> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn GAScoreTypeBasedSelection` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `population` [INFO] [stderr] --> src/ga/ga_selectors.rs:42:26 [INFO] [stderr] | [INFO] [stderr] 42 | fn update(&mut self, population: &mut GAPopulation) {} [INFO] [stderr] | ^^^^^^^^^^ help: consider prefixing with an underscore: `_population` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `pMutation` should have a snake case name [INFO] [stderr] --> src/ga/ga_core.rs:40:26 [INFO] [stderr] | [INFO] [stderr] 40 | fn mutate(&mut self, pMutation : f32); [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `p_mutation` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.37s [INFO] running `"docker" "inspect" "c654e19bb7462250ca6f97608709d9c006b0e2fba6873607480139a2394929f6"` [INFO] running `"docker" "rm" "-f" "c654e19bb7462250ca6f97608709d9c006b0e2fba6873607480139a2394929f6"` [INFO] [stdout] c654e19bb7462250ca6f97608709d9c006b0e2fba6873607480139a2394929f6 [INFO] running `"docker" "create" "-v" "/big/crater/work/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/big/crater/work/builds/worker-6/source:/opt/rustwide/workdir:ro,Z" "-v" "/big/crater/work/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/big/crater/work/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2019-09-28" "test" "--frozen"` [INFO] [stdout] 0c6aebf2441236b2e9cc6fbb73be3d3d7b3479248e3ee12587cbb987766414d2 [INFO] running `"docker" "start" "-a" "0c6aebf2441236b2e9cc6fbb73be3d3d7b3479248e3ee12587cbb987766414d2"` [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.01s [INFO] [stderr] Running /opt/rustwide/target/debug/deps/rust_monster-afe61242a8ab646d [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test ga::ga_random::test::same_seed_different_types ... ok [INFO] [stdout] test ga::ga_random::test::diff_seed ... ok [INFO] [stdout] test ga::ga_random::test::same_seed ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/lib-f2be067b914d2081 [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test tests::init_test_with_factory ... ok [INFO] [stdout] test tests::init_test_with_initial_population ... ok [INFO] [stdout] test tests::test_rank_selector ... ok [INFO] [stdout] test tests::test_roulette_wheel_selector ... ok [INFO] [stdout] test tests::test_uniform_selector ... ok [INFO] [stdout] test tests::test_sort_population ... ok [INFO] [stdout] test tests::test_tournament_selector ... ok [INFO] [stdout] test tests::init_test_empty_initial_pop ... ok [INFO] [stdout] test tests::init_test_missing_args ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] Doc-tests rust-monster [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test src/ga/ga_random.rs - ga::ga_random (line 16) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] running `"docker" "inspect" "0c6aebf2441236b2e9cc6fbb73be3d3d7b3479248e3ee12587cbb987766414d2"` [INFO] running `"docker" "rm" "-f" "0c6aebf2441236b2e9cc6fbb73be3d3d7b3479248e3ee12587cbb987766414d2"` [INFO] [stdout] 0c6aebf2441236b2e9cc6fbb73be3d3d7b3479248e3ee12587cbb987766414d2