[INFO] fetching crate holochain_locksmith 0.0.52-alpha2...
[INFO] checking holochain_locksmith-0.0.52-alpha2 against master#035b01b794602d5861daa43ac792f372f8981ed7 for 152214-denied-retry-0
[INFO] extracting crate holochain_locksmith 0.0.52-alpha2 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate holochain_locksmith 0.0.52-alpha2
[INFO] finished tweaking crates.io crate holochain_locksmith 0.0.52-alpha2
[INFO] tweaked toml for crates.io crate holochain_locksmith 0.0.52-alpha2 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate holochain_locksmith 0.0.52-alpha2 on toolchain 035b01b794602d5861daa43ac792f372f8981ed7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 35 packages to latest compatible versions
[INFO] [stderr]       Adding backtrace v0.3.27 (available: v0.3.76)
[INFO] [stderr]       Adding chrono v0.4.6 (available: v0.4.43)
[INFO] [stderr]       Adding crossbeam-channel v0.3.8 (available: v0.3.9)
[INFO] [stderr]       Adding lazy_static v1.4.0 (available: v1.5.0)
[INFO] [stderr]       Adding log v0.4.8 (available: v0.4.29)
[INFO] [stderr]       Adding parking_lot v0.9.0 (available: v0.12.5)
[INFO] [stderr]       Adding wasi v0.10.0+wasi-snapshot-preview1 (available: v0.10.2+wasi-snapshot-preview1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded semver-parser v0.7.0
[INFO] [stderr]   Downloaded maybe-uninit v2.0.0
[INFO] [stderr]   Downloaded parking_lot v0.9.0
[INFO] [stderr]   Downloaded smallvec v0.6.14
[INFO] [stderr]   Downloaded semver v0.9.0
[INFO] [stderr]   Downloaded rustc_version v0.2.3
[INFO] [stderr]   Downloaded time v0.1.45
[INFO] [stderr]   Downloaded snowflake v1.3.0
[INFO] [stderr]   Downloaded autocfg v0.1.8
[INFO] [stderr]   Downloaded cloudabi v0.0.3
[INFO] [stderr]   Downloaded crossbeam-utils v0.6.6
[INFO] [stderr]   Downloaded log v0.4.8
[INFO] [stderr]   Downloaded redox_syscall v0.1.57
[INFO] [stderr]   Downloaded rustc-demangle v0.1.27
[INFO] [stderr]   Downloaded backtrace v0.3.27
[INFO] [stderr]   Downloaded lock_api v0.3.4
[INFO] [stderr]   Downloaded parking_lot_core v0.6.3
[INFO] [stderr]   Downloaded crossbeam-channel v0.3.8
[INFO] [stderr]   Downloaded wasi v0.10.0+wasi-snapshot-preview1
[INFO] [stderr]   Downloaded chrono v0.4.6
[INFO] [stderr]   Downloaded backtrace-sys v0.1.37
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c11430aaf47fb410fd58255b86c0b6367a519254ba076da67900def9b8e7958a
[INFO] running `Command { std: "docker" "start" "-a" "c11430aaf47fb410fd58255b86c0b6367a519254ba076da67900def9b8e7958a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c11430aaf47fb410fd58255b86c0b6367a519254ba076da67900def9b8e7958a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c11430aaf47fb410fd58255b86c0b6367a519254ba076da67900def9b8e7958a", kill_on_drop: false }`
[INFO] [stdout] c11430aaf47fb410fd58255b86c0b6367a519254ba076da67900def9b8e7958a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+035b01b794602d5861daa43ac792f372f8981ed7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 365cca3a71bace2e5f56ccceb30d9b78a26cee3bb3fea648d12841425d42d55a
[INFO] running `Command { std: "docker" "start" "-a" "365cca3a71bace2e5f56ccceb30d9b78a26cee3bb3fea648d12841425d42d55a", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling libc v0.2.181
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling maybe-uninit v2.0.0
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling log v0.4.8
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking lock_api v0.3.4
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]    Compiling autocfg v0.1.8
[INFO] [stderr]     Checking crossbeam-utils v0.6.6
[INFO] [stderr]     Checking smallvec v0.6.14
[INFO] [stderr]     Checking rustc-demangle v0.1.27
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]     Checking snowflake v1.3.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling backtrace v0.3.27
[INFO] [stderr]     Checking crossbeam-channel v0.3.8
[INFO] [stderr]    Compiling parking_lot_core v0.6.3
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]    Compiling backtrace-sys v0.1.37
[INFO] [stderr]     Checking time v0.1.45
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking chrono v0.4.6
[INFO] [stderr]     Checking holochain_locksmith v0.0.52-alpha2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: fields `lock_type` and `kind` are never read
[INFO] [stdout]   --> src/error.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct LocksmithError {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 17 |     lock_type: LockType,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 18 |     kind: LocksmithErrorKind,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LocksmithError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (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/locksmith/mutex.rs:68:29
[INFO] [stdout]     |
[INFO] [stdout]  68 |               pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<T>> {
[INFO] [stdout]     |                               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[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]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  68 |             pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:74:37
[INFO] [stdout]     |
[INFO] [stdout]  74 |               pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                       ^^^^^ the lifetime is elided here    ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  74 |             pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:80:39
[INFO] [stdout]     |
[INFO] [stdout]  80 |               pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                         ^^^^^ the lifetime is elided here  ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  80 |             pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:86:33
[INFO] [stdout]     |
[INFO] [stdout]  86 |               pub fn $try_lock_fn(&self) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                   ^^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  86 |             pub fn $try_lock_fn(&self) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:68:29
[INFO] [stdout]     |
[INFO] [stdout]  68 |               pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<T>> {
[INFO] [stdout]     |                               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  68 |             pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:74:37
[INFO] [stdout]     |
[INFO] [stdout]  74 |               pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                       ^^^^^ the lifetime is elided here    ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  74 |             pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:80:39
[INFO] [stdout]     |
[INFO] [stdout]  80 |               pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                         ^^^^^ the lifetime is elided here  ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  80 |             pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:86:33
[INFO] [stdout]     |
[INFO] [stdout]  86 |               pub fn $try_lock_fn(&self) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                   ^^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  86 |             pub fn $try_lock_fn(&self) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:68:29
[INFO] [stdout]     |
[INFO] [stdout]  68 |               pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<T>> {
[INFO] [stdout]     |                               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  68 |             pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:74:37
[INFO] [stdout]     |
[INFO] [stdout]  74 |               pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                       ^^^^^ the lifetime is elided here    ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  74 |             pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:80:39
[INFO] [stdout]     |
[INFO] [stdout]  80 |               pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                         ^^^^^ the lifetime is elided here  ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  80 |             pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:86:33
[INFO] [stdout]     |
[INFO] [stdout]  86 |               pub fn $try_lock_fn(&self) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                   ^^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  86 |             pub fn $try_lock_fn(&self) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `lock_type` and `kind` are never read
[INFO] [stdout]   --> src/error.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct LocksmithError {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 17 |     lock_type: LockType,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 18 |     kind: LocksmithErrorKind,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LocksmithError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (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/locksmith/mutex.rs:68:29
[INFO] [stdout]     |
[INFO] [stdout]  68 |               pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<T>> {
[INFO] [stdout]     |                               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[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]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  68 |             pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:74:37
[INFO] [stdout]     |
[INFO] [stdout]  74 |               pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                       ^^^^^ the lifetime is elided here    ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  74 |             pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:80:39
[INFO] [stdout]     |
[INFO] [stdout]  80 |               pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                         ^^^^^ the lifetime is elided here  ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  80 |             pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:86:33
[INFO] [stdout]     |
[INFO] [stdout]  86 |               pub fn $try_lock_fn(&self) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                   ^^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 101 | / mutex_impl!(
[INFO] [stdout] 102 | |     HcMutex,
[INFO] [stdout] 103 | |     Mutex,
[INFO] [stdout] 104 | |     HcMutexGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |     new_guard
[INFO] [stdout] 112 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  86 |             pub fn $try_lock_fn(&self) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:68:29
[INFO] [stdout]     |
[INFO] [stdout]  68 |               pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<T>> {
[INFO] [stdout]     |                               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  68 |             pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:74:37
[INFO] [stdout]     |
[INFO] [stdout]  74 |               pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                       ^^^^^ the lifetime is elided here    ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  74 |             pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:80:39
[INFO] [stdout]     |
[INFO] [stdout]  80 |               pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                         ^^^^^ the lifetime is elided here  ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  80 |             pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:86:33
[INFO] [stdout]     |
[INFO] [stdout]  86 |               pub fn $try_lock_fn(&self) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                   ^^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 113 | / mutex_impl!(
[INFO] [stdout] 114 | |     HcRwLock,
[INFO] [stdout] 115 | |     RwLock,
[INFO] [stdout] 116 | |     HcRwLockReadGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     new_guard_read
[INFO] [stdout] 124 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  86 |             pub fn $try_lock_fn(&self) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:68:29
[INFO] [stdout]     |
[INFO] [stdout]  68 |               pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<T>> {
[INFO] [stdout]     |                               ^^^^^                     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  68 |             pub fn $lock_fn(&self) -> LocksmithResult<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:74:37
[INFO] [stdout]     |
[INFO] [stdout]  74 |               pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                       ^^^^^ the lifetime is elided here    ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  74 |             pub fn $try_lock_for_fn(&self, duration: Duration) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:80:39
[INFO] [stdout]     |
[INFO] [stdout]  80 |               pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                         ^^^^^ the lifetime is elided here  ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  80 |             pub fn $try_lock_until_fn(&self, instant: Instant) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/locksmith/mutex.rs:86:33
[INFO] [stdout]     |
[INFO] [stdout]  86 |               pub fn $try_lock_fn(&self) -> Option<$HcGuard<T>> {
[INFO] [stdout]     |                                   ^^^^^            ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 125 | / mutex_impl!(
[INFO] [stdout] 126 | |     HcRwLock,
[INFO] [stdout] 127 | |     RwLock,
[INFO] [stdout] 128 | |     HcRwLockWriteGuard,
[INFO] [stdout] ...   |
[INFO] [stdout] 135 | |     new_guard_write
[INFO] [stdout] 136 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: this warning originates in the macro `mutex_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout]  86 |             pub fn $try_lock_fn(&self) -> Option<$HcGuard<'_, T>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.55s
[INFO] running `Command { std: "docker" "inspect" "365cca3a71bace2e5f56ccceb30d9b78a26cee3bb3fea648d12841425d42d55a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "365cca3a71bace2e5f56ccceb30d9b78a26cee3bb3fea648d12841425d42d55a", kill_on_drop: false }`
[INFO] [stdout] 365cca3a71bace2e5f56ccceb30d9b78a26cee3bb3fea648d12841425d42d55a
