[INFO] fetching crate fpa_lr 0.5.1... [INFO] checking fpa_lr-0.5.1 against master#cf38b8e663f15db10ce49d7bbce02c99fc3dbc0c for pr-143170 [INFO] extracting crate fpa_lr 0.5.1 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate fpa_lr 0.5.1 [INFO] finished tweaking crates.io crate fpa_lr 0.5.1 [INFO] tweaked toml for crates.io crate fpa_lr 0.5.1 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate fpa_lr 0.5.1 on toolchain cf38b8e663f15db10ce49d7bbce02c99fc3dbc0c [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cf38b8e663f15db10ce49d7bbce02c99fc3dbc0c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate fpa_lr 0.5.1 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" "+cf38b8e663f15db10ce49d7bbce02c99fc3dbc0c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded serde_derive v1.0.110 [INFO] [stderr] Downloaded thiserror-impl v1.0.19 [INFO] [stderr] Downloaded niffler v2.0.1 [INFO] [stderr] Downloaded xz2 v0.1.6 [INFO] [stderr] Downloaded thiserror v1.0.19 [INFO] [stderr] Downloaded syn v1.0.25 [INFO] [stderr] Downloaded lzma-sys v0.1.16 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+cf38b8e663f15db10ce49d7bbce02c99fc3dbc0c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 290a1027db8a425a63b5a375ed2627f39e964abfff6cffe6ed292cc888c95ce0 [INFO] running `Command { std: "docker" "start" "-a" "290a1027db8a425a63b5a375ed2627f39e964abfff6cffe6ed292cc888c95ce0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "290a1027db8a425a63b5a375ed2627f39e964abfff6cffe6ed292cc888c95ce0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "290a1027db8a425a63b5a375ed2627f39e964abfff6cffe6ed292cc888c95ce0", kill_on_drop: false }` [INFO] [stdout] 290a1027db8a425a63b5a375ed2627f39e964abfff6cffe6ed292cc888c95ce0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+cf38b8e663f15db10ce49d7bbce02c99fc3dbc0c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7b14a23d5480d14c8e76426eaa6feff319f389da0d0b17cd5bdc3856d2a8da96 [INFO] running `Command { std: "docker" "start" "-a" "7b14a23d5480d14c8e76426eaa6feff319f389da0d0b17cd5bdc3856d2a8da96", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.70 [INFO] [stderr] Compiling cc v1.0.54 [INFO] [stderr] Compiling proc-macro2 v1.0.17 [INFO] [stderr] Compiling memchr v2.3.3 [INFO] [stderr] Compiling unicode-xid v0.2.0 [INFO] [stderr] Compiling autocfg v1.0.0 [INFO] [stderr] Compiling syn v1.0.25 [INFO] [stderr] Compiling pkg-config v0.3.17 [INFO] [stderr] Compiling byteorder v1.3.4 [INFO] [stderr] Compiling serde v1.0.110 [INFO] [stderr] Compiling crc32fast v1.2.0 [INFO] [stderr] Checking adler32 v1.0.4 [INFO] [stderr] Compiling ryu v1.0.4 [INFO] [stderr] Checking thread_local v1.0.1 [INFO] [stderr] Checking itoa v0.4.5 [INFO] [stderr] Checking regex-syntax v0.6.17 [INFO] [stderr] Checking ordermap v0.3.5 [INFO] [stderr] Checking miniz_oxide v0.3.6 [INFO] [stderr] Checking fixedbitset v0.1.9 [INFO] [stderr] Compiling num-traits v0.2.11 [INFO] [stderr] Checking petgraph v0.4.13 [INFO] [stderr] Checking aho-corasick v0.7.10 [INFO] [stderr] Checking csv-core v0.1.10 [INFO] [stderr] Checking regex-automata v0.1.9 [INFO] [stderr] Compiling bzip2-sys v0.1.8+1.0.8 [INFO] [stderr] Compiling lzma-sys v0.1.16 [INFO] [stderr] Compiling quote v1.0.6 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking flate2 v1.0.14 [INFO] [stderr] Checking clap v2.33.1 [INFO] [stderr] Checking xz2 v0.1.6 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Checking bzip2 v0.3.3 [INFO] [stderr] Checking regex v1.3.7 [INFO] [stderr] Checking bstr v0.2.13 [INFO] [stderr] Compiling thiserror-impl v1.0.19 [INFO] [stderr] Compiling serde_derive v1.0.110 [INFO] [stderr] Checking csv v1.1.3 [INFO] [stderr] Checking thiserror v1.0.19 [INFO] [stderr] Checking niffler v2.0.1 [INFO] [stderr] Checking fpa_lr v0.5.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `self::subcommand::*` [INFO] [stdout] --> src/cli/mod.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | pub use self::subcommand::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self::subcommand::*` [INFO] [stdout] --> src/cli/mod.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | pub use self::subcommand::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/m4.rs:31:24 [INFO] [stdout] | [INFO] [stdout] 31 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^---------- [INFO] [stdout] | | [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Record` [INFO] [stdout] 32 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/m4.rs:31:37 [INFO] [stdout] | [INFO] [stdout] 31 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Serialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_Record` [INFO] [stdout] 32 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/io/m4.rs:195:20 [INFO] [stdout] | [INFO] [stdout] 195 | pub fn records(&mut self) -> Records { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 195 | pub fn records(&mut self) -> Records<'_, R> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/paf.rs:29:24 [INFO] [stdout] | [INFO] [stdout] 29 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^---------- [INFO] [stdout] | | [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Record` [INFO] [stdout] 30 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/paf.rs:29:37 [INFO] [stdout] | [INFO] [stdout] 29 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Serialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_Record` [INFO] [stdout] 30 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/io/paf.rs:199:20 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn records(&mut self) -> Records { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 199 | pub fn records(&mut self) -> Records<'_, R> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/m4.rs:31:24 [INFO] [stdout] | [INFO] [stdout] 31 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^---------- [INFO] [stdout] | | [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Record` [INFO] [stdout] 32 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/m4.rs:31:37 [INFO] [stdout] | [INFO] [stdout] 31 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Serialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_Record` [INFO] [stdout] 32 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/io/m4.rs:195:20 [INFO] [stdout] | [INFO] [stdout] 195 | pub fn records(&mut self) -> Records { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 195 | pub fn records(&mut self) -> Records<'_, R> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/paf.rs:29:24 [INFO] [stdout] | [INFO] [stdout] 29 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^---------- [INFO] [stdout] | | [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_Record` [INFO] [stdout] 30 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/io/paf.rs:29:37 [INFO] [stdout] | [INFO] [stdout] 29 | #[derive(Debug, Clone, Deserialize, Serialize)] [INFO] [stdout] | ^-------- [INFO] [stdout] | | [INFO] [stdout] | `Serialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_Record` [INFO] [stdout] 30 | pub struct Record { [INFO] [stdout] | ------ `Record` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/io/paf.rs:199:20 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn records(&mut self) -> Records { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 199 | pub fn records(&mut self) -> Records<'_, R> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.12s [INFO] running `Command { std: "docker" "inspect" "7b14a23d5480d14c8e76426eaa6feff319f389da0d0b17cd5bdc3856d2a8da96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7b14a23d5480d14c8e76426eaa6feff319f389da0d0b17cd5bdc3856d2a8da96", kill_on_drop: false }` [INFO] [stdout] 7b14a23d5480d14c8e76426eaa6feff319f389da0d0b17cd5bdc3856d2a8da96