[INFO] cloning repository https://github.com/khalidelborai/gilt
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/khalidelborai/gilt" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkhalidelborai%2Fgilt", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkhalidelborai%2Fgilt'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1ec9baa547d5cc2deca19a3a848b3bec0e2d2934
[INFO] testing khalidelborai/gilt against beta-2026-04-21 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkhalidelborai%2Fgilt" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/khalidelborai/gilt
[INFO] finished tweaking git repo https://github.com/khalidelborai/gilt
[INFO] tweaked toml for git repo https://github.com/khalidelborai/gilt written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/khalidelborai/gilt on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/khalidelborai/gilt 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 82ee5da12d18fc825f78627fe9c89f3c4e2d0dfc955df2226021f758181b8623
[INFO] running `Command { std: "docker" "start" "-a" "82ee5da12d18fc825f78627fe9c89f3c4e2d0dfc955df2226021f758181b8623", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "82ee5da12d18fc825f78627fe9c89f3c4e2d0dfc955df2226021f758181b8623", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "82ee5da12d18fc825f78627fe9c89f3c4e2d0dfc955df2226021f758181b8623", kill_on_drop: false }`
[INFO] [stdout] 82ee5da12d18fc825f78627fe9c89f3c4e2d0dfc955df2226021f758181b8623
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d71b59fa8e8a5ef66b188f741d5edcdf4ecb3f3ad71bb2efb1066e3ab4256bff
[INFO] running `Command { std: "docker" "start" "-a" "d71b59fa8e8a5ef66b188f741d5edcdf4ecb3f3ad71bb2efb1066e3ab4256bff", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling zmij v1.0.19
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling pulldown-cmark v0.12.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling arc-swap v1.9.1
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling rtoolbox v0.0.3
[INFO] [stderr]    Compiling rpassword v7.4.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling fancy-regex v0.16.2
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling gilt v0.10.3 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.59s
[INFO] running `Command { std: "docker" "inspect" "d71b59fa8e8a5ef66b188f741d5edcdf4ecb3f3ad71bb2efb1066e3ab4256bff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d71b59fa8e8a5ef66b188f741d5edcdf4ecb3f3ad71bb2efb1066e3ab4256bff", kill_on_drop: false }`
[INFO] [stdout] d71b59fa8e8a5ef66b188f741d5edcdf4ecb3f3ad71bb2efb1066e3ab4256bff
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1225ebe4b767bf400e2378fd1eb956d87207c32138344cb0f7ab3f4bc3bd8e77
[INFO] running `Command { std: "docker" "start" "-a" "1225ebe4b767bf400e2378fd1eb956d87207c32138344cb0f7ab3f4bc3bd8e77", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling clap_lex v0.7.7
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling pulldown-cmark v0.12.2
[INFO] [stderr]    Compiling fancy-regex v0.16.2
[INFO] [stderr]    Compiling clap_builder v4.5.57
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling clap v4.5.57
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling zerocopy-derive v0.8.39
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling syntect v5.3.0
[INFO] [stderr]    Compiling gilt v0.10.3 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> examples/track_demo.rs:168:19
[INFO] [stdout]     |
[INFO] [stdout] 168 |         .inspect(|b| {
[INFO] [stdout]     |                   ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Critical` is never constructed
[INFO] [stdout]    --> examples/protocol.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 123 | enum LogLevel {
[INFO] [stdout]     |      -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 128 |     Critical,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LogLevel` has derived impls for the traits `Clone` and `Debug`, but these are 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: fields `x` and `y` are never read
[INFO] [stdout]    --> src/utils/inspect.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 269 |     struct TestPoint {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 270 |         x: f64,
[INFO] [stdout]     |         ^
[INFO] [stdout] 271 |         y: f64,
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TestPoint` 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: fields `x` and `y` are never read
[INFO] [stdout]    --> src/utils/pretty.rs:755:13
[INFO] [stdout]     |
[INFO] [stdout] 754 |         struct Foo {
[INFO] [stdout]     |                --- fields in this struct
[INFO] [stdout] 755 |             x: i32,
[INFO] [stdout]     |             ^
[INFO] [stdout] 756 |             y: String,
[INFO] [stdout]     |             ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Foo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]     --> src/utils/pretty.rs:1308:13
[INFO] [stdout]      |
[INFO] [stdout] 1307 |         struct Data {
[INFO] [stdout]      |                ---- field in this struct
[INFO] [stdout] 1308 |             name: String,
[INFO] [stdout]      |             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Data` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `x` is never read
[INFO] [stdout]     --> src/utils/pretty.rs:1470:13
[INFO] [stdout]      |
[INFO] [stdout] 1469 |         struct Foo {
[INFO] [stdout]      |                --- field in this struct
[INFO] [stdout] 1470 |             x: i32,
[INFO] [stdout]      |             ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Foo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `must_use` that must be used
[INFO] [stdout]    --> src/error/mod.rs:417:9
[INFO] [stdout]     |
[INFO] [stdout] 417 | /         format!(
[INFO] [stdout] 418 | |             "{:?}",
[INFO] [stdout] 419 | |             ColorParseError::InvalidHexFormat("test".to_string())
[INFO] [stdout] 420 | |         );
[INFO] [stdout]     | |_________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 417 |         let _ = format!(
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `must_use` that must be used
[INFO] [stdout]    --> src/error/mod.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 421 |         format!("{:?}", StyleError::InvalidSyntax("test".to_string()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let _ = format!("{:?}", StyleError::InvalidSyntax("test".to_string()));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `must_use` that must be used
[INFO] [stdout]    --> src/error/mod.rs:422:9
[INFO] [stdout]     |
[INFO] [stdout] 422 |         format!("{:?}", ConsoleError::Generic("test".to_string()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 422 |         let _ = format!("{:?}", ConsoleError::Generic("test".to_string()));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `must_use` that must be used
[INFO] [stdout]    --> src/error/mod.rs:423:9
[INFO] [stdout]     |
[INFO] [stdout] 423 |         format!("{:?}", SegmentError::InvalidSegment("test".to_string()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 423 |         let _ = format!("{:?}", SegmentError::InvalidSegment("test".to_string()));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `must_use` that must be used
[INFO] [stdout]    --> src/error/mod.rs:424:9
[INFO] [stdout]     |
[INFO] [stdout] 424 |         format!("{:?}", CellError::InvalidWidth("test".to_string()));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 424 |         let _ = format!("{:?}", CellError::InvalidWidth("test".to_string()));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `must_use` that must be used
[INFO] [stdout]    --> src/error/mod.rs:425:9
[INFO] [stdout]     |
[INFO] [stdout] 425 |         format!("{:?}", PaletteError::InvalidIndex(0));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 425 |         let _ = format!("{:?}", PaletteError::InvalidIndex(0));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 12s
[INFO] running `Command { std: "docker" "inspect" "1225ebe4b767bf400e2378fd1eb956d87207c32138344cb0f7ab3f4bc3bd8e77", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1225ebe4b767bf400e2378fd1eb956d87207c32138344cb0f7ab3f4bc3bd8e77", kill_on_drop: false }`
[INFO] [stdout] 1225ebe4b767bf400e2378fd1eb956d87207c32138344cb0f7ab3f4bc3bd8e77
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4d32f49f9330b6aa900caa9c947e359f3b7b79d3cd43e9a86c928107986fe979
[INFO] running `Command { std: "docker" "start" "-a" "4d32f49f9330b6aa900caa9c947e359f3b7b79d3cd43e9a86c928107986fe979", kill_on_drop: false }`
[INFO] [stderr] warning: variant `Critical` is never constructed
[INFO] [stderr]    --> examples/protocol.rs:128:5
[INFO] [stderr]     |
[INFO] [stderr] 123 | enum LogLevel {
[INFO] [stderr]     |      -------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 128 |     Critical,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `LogLevel` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `x` and `y` are never read
[INFO] [stderr]    --> src/utils/inspect.rs:270:9
[INFO] [stderr]     |
[INFO] [stderr] 269 |     struct TestPoint {
[INFO] [stderr]     |            --------- fields in this struct
[INFO] [stderr] 270 |         x: f64,
[INFO] [stderr]     |         ^
[INFO] [stderr] 271 |         y: f64,
[INFO] [stderr]     |         ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `TestPoint` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `x` and `y` are never read
[INFO] [stderr]    --> src/utils/pretty.rs:755:13
[INFO] [stderr]     |
[INFO] [stderr] 754 |         struct Foo {
[INFO] [stderr]     |                --- fields in this struct
[INFO] [stderr] 755 |             x: i32,
[INFO] [stderr]     |             ^
[INFO] [stderr] 756 |             y: String,
[INFO] [stderr]     |             ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Foo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `name` is never read
[INFO] [stderr]     --> src/utils/pretty.rs:1308:13
[INFO] [stderr]      |
[INFO] [stderr] 1307 |         struct Data {
[INFO] [stderr]      |                ---- field in this struct
[INFO] [stderr] 1308 |             name: String,
[INFO] [stderr]      |             ^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `Data` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `x` is never read
[INFO] [stderr]     --> src/utils/pretty.rs:1470:13
[INFO] [stderr]      |
[INFO] [stderr] 1469 |         struct Foo {
[INFO] [stderr]      |                --- field in this struct
[INFO] [stderr] 1470 |             x: i32,
[INFO] [stderr]      |             ^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `Foo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `must_use` that must be used
[INFO] [stderr]    --> src/error/mod.rs:417:9
[INFO] [stderr]     |
[INFO] [stderr] 417 | /         format!(
[INFO] [stderr] 418 | |             "{:?}",
[INFO] [stderr] 419 | |             ColorParseError::InvalidHexFormat("test".to_string())
[INFO] [stderr] 420 | |         );
[INFO] [stderr]     | |_________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 417 |         let _ = format!(
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `must_use` that must be used
[INFO] [stderr]    --> src/error/mod.rs:421:9
[INFO] [stderr]     |
[INFO] [stderr] 421 |         format!("{:?}", StyleError::InvalidSyntax("test".to_string()));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 421 |         let _ = format!("{:?}", StyleError::InvalidSyntax("test".to_string()));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `must_use` that must be used
[INFO] [stderr]    --> src/error/mod.rs:422:9
[INFO] [stderr]     |
[INFO] [stderr] 422 |         format!("{:?}", ConsoleError::Generic("test".to_string()));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 422 |         let _ = format!("{:?}", ConsoleError::Generic("test".to_string()));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `must_use` that must be used
[INFO] [stderr]    --> src/error/mod.rs:423:9
[INFO] [stderr]     |
[INFO] [stderr] 423 |         format!("{:?}", SegmentError::InvalidSegment("test".to_string()));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 423 |         let _ = format!("{:?}", SegmentError::InvalidSegment("test".to_string()));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `must_use` that must be used
[INFO] [stderr]    --> src/error/mod.rs:424:9
[INFO] [stderr]     |
[INFO] [stderr] 424 |         format!("{:?}", CellError::InvalidWidth("test".to_string()));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 424 |         let _ = format!("{:?}", CellError::InvalidWidth("test".to_string()));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `must_use` that must be used
[INFO] [stderr]    --> src/error/mod.rs:425:9
[INFO] [stderr]     |
[INFO] [stderr] 425 |         format!("{:?}", PaletteError::InvalidIndex(0));
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 425 |         let _ = format!("{:?}", PaletteError::InvalidIndex(0));
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `gilt` (example "protocol") generated 1 warning
[INFO] [stderr] warning: `gilt` (lib test) generated 10 warnings
[INFO] [stderr] warning: unused variable: `b`
[INFO] [stderr]    --> examples/track_demo.rs:168:19
[INFO] [stderr]     |
[INFO] [stderr] 168 |         .inspect(|b| {
[INFO] [stderr]     |                   ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `gilt` (example "track_demo") generated 1 warning (run `cargo fix --example "track_demo" -p gilt` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.33s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/gilt-30e7af612e1dacf2)
[INFO] [stdout] 
[INFO] [stdout] running 2166 tests
[INFO] [stdout] test accordion::tests::test_accordion_collapsed ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_expand_all ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_empty ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_new ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_allow_multiple_open ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_push ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_collapse_all ... ok
[INFO] [stdout] test accordion::tests::test_custom_icons ... ok
[INFO] [stdout] test accordion::tests::test_empty_title ... ok
[INFO] [stdout] test accordion::tests::test_accordion_expanded ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_render ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_display ... ok
[INFO] [stdout] test accordion::tests::test_accordion_group_expand_item_mutual_exclusion ... ok
[INFO] [stdout] test accordion::tests::test_empty_content ... ok
[INFO] [stdout] test accordion::tests::test_expand_collapse ... ok
[INFO] [stdout] test accordion::tests::test_expand_item_out_of_bounds ... ok
[INFO] [stdout] test accordion::tests::test_toggle ... ok
[INFO] [stdout] test badge::tests::test_badge_style_default_icons ... ok
[INFO] [stdout] test badge::tests::test_badge_style_equality ... ok
[INFO] [stdout] test badge::tests::test_box_chars_square ... ok
[INFO] [stdout] test badge::tests::test_box_chars_rounded ... ok
[INFO] [stdout] test accordion::tests::test_custom_icons_rendering ... ok
[INFO] [stdout] test badge::tests::test_effective_icon_explicit ... ok
[INFO] [stdout] test accordion::tests::test_indentation ... ok
[INFO] [stdout] test badge::tests::test_effective_icon_none ... ok
[INFO] [stdout] test badge::tests::test_error ... ok
[INFO] [stdout] test badge::tests::test_display_trait ... ok
[INFO] [stdout] test badge::tests::test_clone ... ok
[INFO] [stdout] test badge::tests::test_icon_override ... ok
[INFO] [stdout] test badge::tests::test_icon_remove ... ok
[INFO] [stdout] test accordion::tests::test_long_content_wrapping ... ok
[INFO] [stdout] test badge::tests::test_builder_rounded ... ok
[INFO] [stdout] test badge::tests::test_effective_icon_default ... ok
[INFO] [stdout] test badge::tests::test_builder_chain ... ok
[INFO] [stdout] test badge::tests::test_new ... ok
[INFO] [stdout] test badge::tests::test_info ... ok
[INFO] [stdout] test badge::tests::test_builder_style ... ok
[INFO] [stdout] test badge::tests::test_render_no_icon ... ok
[INFO] [stdout] test badge::tests::test_warning ... ok
[INFO] [stdout] test breadcrumbs::tests::test_builder_active_style ... ok
[INFO] [stdout] test breadcrumbs::tests::test_arrow ... ok
[INFO] [stdout] test breadcrumbs::tests::test_builder_chain ... ok
[INFO] [stdout] test badge::tests::test_render_with_icon ... ok
[INFO] [stdout] test breadcrumbs::tests::test_builder_separator ... ok
[INFO] [stdout] test breadcrumbs::tests::test_builder_style ... ok
[INFO] [stdout] test breadcrumbs::tests::test_builder_separator_style ... ok
[INFO] [stdout] test badge::tests::test_render_square ... ok
[INFO] [stdout] test badge::tests::test_success ... ok
[INFO] [stdout] test badge::tests::test_builder_icon ... ok
[INFO] [stdout] test breadcrumbs::tests::test_chevron ... ok
[INFO] [stdout] test breadcrumbs::tests::test_empty ... ok
[INFO] [stdout] test breadcrumbs::tests::test_display_single_item ... ok
[INFO] [stdout] test breadcrumbs::tests::test_display_trait ... ok
[INFO] [stdout] test breadcrumbs::tests::test_file_path_navigation ... ok
[INFO] [stdout] test breadcrumbs::tests::test_clone ... ok
[INFO] [stdout] test accordion::tests::test_accordion_display ... ok
[INFO] [stdout] test badge::tests::test_render_multiline ... ok
[INFO] [stdout] test badge::tests::test_render_rounded ... ok
[INFO] [stdout] test breadcrumbs::tests::test_from_path ... ok
[INFO] [stdout] test breadcrumbs::tests::test_new ... ok
[INFO] [stdout] test breadcrumbs::tests::test_push ... ok
[INFO] [stdout] test breadcrumbs::tests::test_pop_empty ... ok
[INFO] [stdout] test breadcrumbs::tests::test_pop ... ok
[INFO] [stdout] test breadcrumbs::tests::test_push_pop_sequence ... ok
[INFO] [stdout] test breadcrumbs::tests::test_render_arrow ... ok
[INFO] [stdout] test breadcrumbs::tests::test_render_empty ... ok
[INFO] [stdout] test breadcrumbs::tests::test_slash ... ok
[INFO] [stdout] test breadcrumbs::tests::test_render_with_custom_separator ... ok
[INFO] [stdout] test breadcrumbs::tests::test_render_single_item ... ok
[INFO] [stdout] test breadcrumbs::tests::test_from_path_with_empty_components ... ok
[INFO] [stdout] test breadcrumbs::tests::test_render_slash ... ok
[INFO] [stdout] test canvas::tests::test_circle_negative_radius ... ok
[INFO] [stdout] test canvas::tests::test_braille_mapping ... ok
[INFO] [stdout] test breadcrumbs::tests::test_push_string ... ok
[INFO] [stdout] test breadcrumbs::tests::test_settings_hierarchy ... ok
[INFO] [stdout] test canvas::tests::test_display_trait ... ok
[INFO] [stdout] test breadcrumbs::tests::test_render_multiple_items ... ok
[INFO] [stdout] test canvas::tests::test_empty_canvas ... ok
[INFO] [stdout] test breadcrumbs::tests::test_navigation_flow ... ok
[INFO] [stdout] test canvas::tests::test_fill_rect ... ok
[INFO] [stdout] test canvas::tests::test_frame_multiline ... ok
[INFO] [stdout] test canvas::tests::test_full_braille_char ... ok
[INFO] [stdout] test breadcrumbs::tests::test_render_chevron ... ok
[INFO] [stdout] test breadcrumbs::tests::test_wizard_steps ... ok
[INFO] [stdout] test canvas::tests::test_circle ... ok
[INFO] [stdout] test canvas::tests::test_circle_radius_zero ... ok
[INFO] [stdout] test canvas::tests::test_line_diagonal ... ok
[INFO] [stdout] test canvas::tests::test_measure ... ok
[INFO] [stdout] test canvas::tests::test_multiple_pixels_same_cell ... ok
[INFO] [stdout] test canvas::tests::test_line_horizontal ... ok
[INFO] [stdout] test canvas::tests::test_clear ... ok
[INFO] [stdout] test canvas::tests::test_pixel_dimensions ... ok
[INFO] [stdout] test canvas::tests::test_pixel_get_unset ... ok
[INFO] [stdout] test canvas::tests::test_pixel_toggle ... ok
[INFO] [stdout] test canvas::tests::test_pixel_unset ... ok
[INFO] [stdout] test canvas::tests::test_rect_outline ... ok
[INFO] [stdout] test canvas::tests::test_rect_zero ... ok
[INFO] [stdout] test color::accessibility::tests::test_known_pair_green_on_black ... ok
[INFO] [stdout] test color::accessibility::tests::test_black_on_white_max_contrast ... ok
[INFO] [stdout] test canvas::tests::test_renderable_style ... ok
[INFO] [stdout] test color::accessibility::tests::test_known_pair_red_on_white ... ok
[INFO] [stdout] test color::accessibility::tests::test_black_on_black_no_contrast ... ok
[INFO] [stdout] test color::accessibility::tests::test_luminance_black_is_zero ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aa_black_on_white ... ok
[INFO] [stdout] test color::accessibility::tests::test_luminance_pure_green_highest_among_primaries ... ok
[INFO] [stdout] test canvas::tests::test_renderable ... ok
[INFO] [stdout] test color::accessibility::tests::test_luminance_white_is_one ... ok
[INFO] [stdout] test canvas::tests::test_single_pixel_set ... ok
[INFO] [stdout] test canvas::tests::test_line_vertical ... ok
[INFO] [stdout] test canvas::tests::test_out_of_bounds ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aa_fails_for_low_contrast ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aa_large_black_on_white ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aaa_black_on_white ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aa_large_fails_for_very_low_contrast ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aaa_fails_for_moderate_contrast ... ok
[INFO] [stdout] test color::accessibility::tests::test_ratio_always_at_least_one ... ok
[INFO] [stdout] test color::accessibility::tests::test_mid_gray_on_white ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aa_large_red_on_white ... ok
[INFO] [stdout] test color::accessibility::tests::test_symmetry ... ok
[INFO] [stdout] test color::accessibility::tests::test_symmetry_with_white ... ok
[INFO] [stdout] test color::accessibility::tests::test_white_on_white_no_contrast ... ok
[INFO] [stdout] test color::accessibility::tests::test_meets_aa_threshold_boundary ... ok
[INFO] [stdout] test color::color_env::tests::force_color_unset_no_force ... ok
[INFO] [stdout] test color::cache_tests::color_cache_returns_equivalent_value ... ok
[INFO] [stdout] test color::color_env::tests::no_color_unset_means_color_enabled ... ok
[INFO] [stdout] test color::color_env::tests::test_clicolor_0_disables ... ok
[INFO] [stdout] test color::color_env::tests::test_clicolor_force_0_does_not_force ... ok
[INFO] [stdout] test color::color_env::tests::test_clicolor_force_1 ... ok
[INFO] [stdout] test color::color_env::tests::test_clicolor_1_no_override ... ok
[INFO] [stdout] test color::color_env::tests::test_force_color_1_forces ... ok
[INFO] [stdout] test color::color_env::tests::test_force_color_3_truecolor ... ok
[INFO] [stdout] test color::color_env::tests::no_color_empty_string_does_not_disable ... ok
[INFO] [stdout] test color::color_env::tests::test_force_color_0_disables ... ok
[INFO] [stdout] test color::color_env::tests::force_color_empty_string_does_not_force ... ok
[INFO] [stdout] test color::color_env::tests::test_force_color_wins_over_clicolor_force ... ok
[INFO] [stdout] test color::color_env::tests::force_color_nonempty_forces ... ok
[INFO] [stdout] test color::color_env::tests::test_force_color_unknown_value_forces ... ok
[INFO] [stdout] test color::color_env::tests::test_no_color_any_value ... ok
[INFO] [stdout] test color::cache_tests::color_cache_populates_on_parse ... ok
[INFO] [stdout] test color::color_env::tests::test_no_color_set_disables_color ... ok
[INFO] [stdout] test color::color_env::tests::test_no_vars_set_returns_none ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_0 ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_1 ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_arbitrary_value ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_true_mixed_case ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_true_uppercase ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_empty ... ok
[INFO] [stdout] test color::color_env::tests::test_no_color_wins_over_force_color ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_unset ... ok
[INFO] [stdout] test color::color_env::tests::tty_compatible_zero_forces_not_tty ... ok
[INFO] [stdout] test color::color_env::tests::tty_compatible_one_forces_tty ... ok
[INFO] [stdout] test color::color_triplet::tests::test_clone ... ok
[INFO] [stdout] test color::color_env::tests::tty_interactive_one_forces_interactive ... ok
[INFO] [stdout] test color::color_triplet::tests::test_copy ... ok
[INFO] [stdout] test color::color_env::tests::tty_interactive_independent_of_tty_compatible ... ok
[INFO] [stdout] test color::color_env::tests::test_reduce_motion_true_lowercase ... ok
[INFO] [stdout] test color::color_env::tests::tty_interactive_zero_forces_not_interactive ... ok
[INFO] [stdout] test color::color_triplet::tests::test_display_matches_hex ... ok
[INFO] [stdout] test color::color_triplet::tests::test_debug_trait ... ok
[INFO] [stdout] test color::color_env::tests::no_color_nonempty_disables ... ok
[INFO] [stdout] test color::color_env::tests::tty_compatible_unset_yields_none ... ok
[INFO] [stdout] test color::color_triplet::tests::test_equality ... ok
[INFO] [stdout] test color::color_triplet::tests::test_hash_in_collections ... ok
[INFO] [stdout] test color::color_triplet::tests::test_hex_black ... ok
[INFO] [stdout] test color::color_triplet::tests::test_hex_green ... ok
[INFO] [stdout] test color::color_triplet::tests::test_hex_arbitrary ... ok
[INFO] [stdout] test color::color_triplet::tests::test_new ... ok
[INFO] [stdout] test color::color_triplet::tests::test_hex_white ... ok
[INFO] [stdout] test color::color_triplet::tests::test_normalized_arbitrary ... ok
[INFO] [stdout] test color::color_triplet::tests::test_normalized_black ... ok
[INFO] [stdout] test color::color_triplet::tests::test_normalized_green ... ok
[INFO] [stdout] test color::color_triplet::tests::test_normalized_white ... ok
[INFO] [stdout] test color::color_env::tests::tty_compatible_other_value_is_none ... ok
[INFO] [stdout] test accordion::tests::test_builder_chain ... ok
[INFO] [stdout] test color::color_triplet::tests::test_display_trait ... ok
[INFO] [stdout] test color::color_triplet::tests::test_rgb_arbitrary ... ok
[INFO] [stdout] test color::color_triplet::tests::test_rgb_green ... ok
[INFO] [stdout] test color::color_triplet::tests::test_rgb_white ... ok
[INFO] [stdout] test color::color_triplet::tests::test_rgb_black ... ok
[INFO] [stdout] test color::palette::tests::test_eight_bit_palette_cube_colors ... ok
[INFO] [stdout] test color::palette::tests::test_eight_bit_palette_grayscale ... ok
[INFO] [stdout] test color::palette::tests::test_match_color_approximate ... ok
[INFO] [stdout] test color::palette::tests::test_eight_bit_palette_standard_colors ... ok
[INFO] [stdout] test color::palette::tests::test_eight_bit_palette_length ... ok
[INFO] [stdout] test color::palette::tests::test_match_color_exact ... ok
[INFO] [stdout] test color::palette::tests::test_windows_palette_colors ... ok
[INFO] [stdout] test color::palette::tests::test_redmean_distance_formula ... ok
[INFO] [stdout] test color::palette::tests::test_windows_palette_length ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_default_terminal_theme_ansi_black ... ok
[INFO] [stdout] test color::palette::tests::test_match_color_in_standard_palette ... ok
[INFO] [stdout] test color::palette::tests::test_palette_new ... ok
[INFO] [stdout] test color::palette::tests::test_palette_get ... ok
[INFO] [stdout] test color::palette::tests::test_match_color_in_eight_bit_palette ... ok
[INFO] [stdout] test color::tests::test_blend_rgb ... ok
[INFO] [stdout] test color::palette::tests::test_standard_palette_colors ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_default_terminal_theme_ansi_dark_red ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_default_terminal_theme_foreground_background ... ok
[INFO] [stdout] test color::tests::test_blend_rgb_one ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_monokai_foreground ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_night_owlish_theme ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_dimmed_monokai_theme ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_theme_with_no_bright_colors ... ok
[INFO] [stdout] test color::palette::tests::test_standard_palette_length ... ok
[INFO] [stdout] test color::terminal_theme::tests::test_svg_export_theme_background ... ok
[INFO] [stdout] test color::tests::test_downgrade_default ... ok
[INFO] [stdout] test color::tests::test_display_trait ... ok
[INFO] [stdout] test color::tests::test_downgrade_black_to_eightbit ... ok
[INFO] [stdout] test color::tests::test_from_ansi_eightbit ... ok
[INFO] [stdout] test color::tests::test_downgrade_red_to_standard ... ok
[INFO] [stdout] test color::tests::test_from_ansi_standard ... ok
[INFO] [stdout] test color::tests::test_downgrade_color_20_to_standard ... ok
[INFO] [stdout] test color::tests::test_from_triplet ... ok
[INFO] [stdout] test color::tests::test_downgrade_white_to_eightbit ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_bright_red_foreground ... ok
[INFO] [stdout] test color::tests::test_downgrade_green_to_standard ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_default_background ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_default_foreground ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_eightbit_foreground ... ok
[INFO] [stdout] test color::tests::test_display_trait_no_number ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_truecolor_background ... ok
[INFO] [stdout] test color::tests::test_get_truecolor_default_background ... ok
[INFO] [stdout] test color::tests::test_get_truecolor_hex ... ok
[INFO] [stdout] test color::tests::test_get_truecolor_red ... ok
[INFO] [stdout] test color::tests::test_is_system_defined ... ok
[INFO] [stdout] test color::tests::test_parse_bright_red ... ok
[INFO] [stdout] test color::tests::test_blend_rgb_zero ... ok
[INFO] [stdout] test color::tests::test_parse_case_insensitive ... ok
[INFO] [stdout] test color::tests::test_parse_color_100 ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_red_background ... ok
[INFO] [stdout] test color::tests::test_parse_default ... ok
[INFO] [stdout] test color::tests::test_downgrade_red_to_eightbit ... ok
[INFO] [stdout] test color::tests::test_parse_error_color_256 ... ok
[INFO] [stdout] test color::tests::test_parse_color_15 ... ok
[INFO] [stdout] test color::tests::test_parse_error_invalid_rgb ... ok
[INFO] [stdout] test color::tests::test_parse_error_invalid_hex ... ok
[INFO] [stdout] test color::tests::test_parse_error_rgb_missing_component ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_truecolor_foreground ... ok
[INFO] [stdout] test color::tests::test_parse_grey_gray_alias ... ok
[INFO] [stdout] test color::tests::test_parse_hex ... ok
[INFO] [stdout] test color::tests::test_parse_red ... ok
[INFO] [stdout] test color::tests::test_parse_error_unknown_color ... ok
[INFO] [stdout] test color::tests::test_parse_rgb_hex ... ok
[INFO] [stdout] test color::tests::test_parse_rgb_hex_invalid_chars ... ok
[INFO] [stdout] test color::tests::test_parse_rgb_hex_invalid_length ... ok
[INFO] [stdout] test color::tests::test_get_ansi_codes_red_foreground ... ok
[INFO] [stdout] test color::tests::test_parse_rgb_hex_lowercase ... ok
[INFO] [stdout] test color::tests::test_parse_rgb_hex_uppercase ... ok
[INFO] [stdout] test color::tests::test_parse_rgb ... ok
[INFO] [stdout] test color::tests::test_parse_yellow4 ... ok
[INFO] [stdout] test color::tests::test_rgb_to_hls_black ... ok
[INFO] [stdout] test color::tests::test_rgb_to_hls_gray ... ok
[INFO] [stdout] test color::tests::test_parse_color_16 ... ok
[INFO] [stdout] test color::tests::test_rgb_to_hls_white ... ok
[INFO] [stdout] test color::tests::test_system ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_empty_name ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_basic ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_invalid_style ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_dotted_names ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_empty_content ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_ignores_non_styles_sections ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_comments_and_blanks ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_no_styles_section ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_missing_equals ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_style_with_on_color ... ok
[INFO] [stdout] test color::theme::tests::test_pop_base_error ... ok
[INFO] [stdout] test color::theme::tests::test_from_str_with_inheritance ... ok
[INFO] [stdout] test color::theme::tests::test_round_trip ... ok
[INFO] [stdout] test color::theme::tests::test_read_from_reader ... ok
[INFO] [stdout] test color::theme::tests::test_theme_new_inherit ... ok
[INFO] [stdout] test color::theme::tests::test_theme_new_none_styles ... ok
[INFO] [stdout] test color::theme::tests::test_from_file_not_found ... ok
[INFO] [stdout] test color::tests::test_get_truecolor_default_foreground ... ok
[INFO] [stdout] test color::theme::tests::test_theme_override_default ... ok
[INFO] [stdout] test color::theme::tests::test_theme_config_sorted ... ok
[INFO] [stdout] test color::theme::tests::test_theme_stack_basic ... ok
[INFO] [stdout] test color::theme::tests::test_theme_from_str_error_display ... ok
[INFO] [stdout] test color::theme::tests::test_theme_get_missing ... ok
[INFO] [stdout] test color::theme::tests::test_theme_stack_debug ... ok
[INFO] [stdout] test color::theme::tests::test_from_file_invalid_content ... ok
[INFO] [stdout] test color::theme::tests::test_theme_config ... ok
[INFO] [stdout] test color::theme::tests::test_from_file ... ok
[INFO] [stdout] test color::theme::tests::test_theme_stack_push_no_inherit ... ok
[INFO] [stdout] test color::theme::tests::test_theme_stack_get_missing ... ok
[INFO] [stdout] test color::theme::tests::test_theme_stack_error_display ... ok
[INFO] [stdout] test color::theme::tests::test_theme_new_no_inherit ... ok
[INFO] [stdout] test color::tests::test_is_default ... ok
[INFO] [stdout] test columns::tests::test_default_trait ... ok
[INFO] [stdout] test columns::tests::test_empty_renderables ... ok
[INFO] [stdout] test color::theme::tests::test_to_config_alias ... ok
[INFO] [stdout] test columns::tests::test_alignment_right ... ok
[INFO] [stdout] test columns::tests::test_add_renderable ... ok
[INFO] [stdout] test columns::tests::test_column_first_uneven ... ok
[INFO] [stdout] test color::theme::tests::test_theme_stack_push_pop ... ok
[INFO] [stdout] test columns::tests::test_default_construction ... ok
[INFO] [stdout] test columns::tests::test_alignment_center ... ok
[INFO] [stdout] test columns::tests::test_auto_fit_all_in_one_row ... ok
[INFO] [stdout] test columns::tests::test_auto_fit_forces_wrapping ... ok
[INFO] [stdout] test columns::tests::test_auto_fit_two_columns ... ok
[INFO] [stdout] test columns::tests::test_builder_chaining ... ok
[INFO] [stdout] test columns::tests::test_display_trait ... ok
[INFO] [stdout] test columns::tests::test_column_first_and_right_to_left_combined ... ok
[INFO] [stdout] test columns::tests::test_expand_mode ... ok
[INFO] [stdout] test columns::tests::test_column_first_ordering ... ok
[INFO] [stdout] test columns::tests::test_equal_sizing ... ok
[INFO] [stdout] test columns::tests::test_title ... ok
[INFO] [stdout] test columns::tests::test_equal_with_fixed_width ... ok
[INFO] [stdout] test columns::tests::test_fixed_width ... ok
[INFO] [stdout] test columns::tests::test_no_padding ... ok
[INFO] [stdout] test columns::tests::test_fixed_width_column_count ... ok
[INFO] [stdout] test columns::tests::test_render_narrow_console ... ok
[INFO] [stdout] test columns::tests::test_right_to_left ... ok
[INFO] [stdout] test columns::tests::test_render_many_items ... ok
[INFO] [stdout] [?1049h[H[?1049ltest columns::tests::test_single_item_column_first ... ok
[INFO] [stdout] test columns::tests::test_with_align ... ok
[INFO] [stdout] test columns::tests::test_single_item ... ok
[INFO] [stdout] test columns::tests::test_with_column_first ... ok
[INFO] [stdout] test columns::tests::test_render_with_console ... ok
[INFO] [stdout] test columns::tests::test_with_equal ... ok
[INFO] [stdout] test columns::tests::test_with_right_to_left ... ok
[INFO] [stdout] test columns::tests::test_with_title ... ok
[INFO] [stdout] test console::tests::test_alt_screen_enable_disable ... ok
[INFO] [stdout] test console::tests::buffer_flush_does_not_discard_output ... ok
[INFO] [stdout] test console::tests::test_buffer_nesting ... ok
[INFO] [stdout] test console::tests::test_begin_synchronized_capture ... ok
[INFO] [stdout] test columns::tests::test_with_width ... ok
[INFO] [stdout] test console::tests::test_capture_empty ... ok
[INFO] [stdout] test console::tests::test_console_color_system_256 ... ok
[INFO] [stdout] test console::tests::test_console_color_system_override_builder ... ok
[INFO] [stdout] test console::tests::test_console_color_system_standard ... ok
[INFO] [stdout] test console::tests::test_console_default ... ok
[INFO] [stdout] test console::tests::test_console_dimensions_equality ... ok
[INFO] [stdout] test columns::tests::test_with_expand ... ok
[INFO] [stdout] test columns::tests::test_with_padding ... ok
[INFO] [stdout] test console::tests::test_console_builder_defaults ... ok
[INFO] [stdout] test console::tests::test_console_custom_width_height ... ok
[INFO] [stdout] test console::tests::test_capture_basic ... ok
[INFO] [stdout] test console::tests::test_capture_multiple_prints ... ok
[INFO] [stdout] test console::tests::test_console_color_system_truecolor ... ok
[INFO] [stdout] test console::tests::test_console_builder_height ... ok
[INFO] [stdout] test console::tests::test_console_no_color ... ok
[INFO] [stdout] [H[2Jtest console::tests::test_console_options_ascii_only_utf8 ... ok
[INFO] [stdout] test console::tests::test_console_dimensions_clone ... ok
[INFO] [stdout] test console::tests::test_control_bell ... ok
[INFO] [stdout] test console::tests::test_console_options_reset_height ... ok
[INFO] [stdout] test console::tests::test_control_clear ... ok
[INFO] [stdout] test console::tests::test_console_options_update_dimensions ... ok
[INFO] [stdout] test console::tests::test_console_options_update_width ... ok
[INFO] [stdout] test console::tests::test_console_no_color_overrides_env_vars ... ok
[INFO] [stdout] test console::tests::test_console_options_ascii_only_ascii ... ok
[INFO] [stdout] test console::tests::test_console_options_ascii_only_latin1 ... ok
[INFO] [stdout] test console::tests::test_console_options_copy ... ok
[INFO] [stdout] test console::tests::test_detect_terminal_size_defaults ... ok
[INFO] [stdout] [?1049h[H[?1049l<script>alert('xss')</script>
[INFO] [stdout] [31mRed text[0m
[INFO] [stdout] [?25h[?25ltest console::tests::test_detect_terminal_size_env ... ok
[INFO] [stdout] test console::tests::test_encoding_always_utf8 ... ok
[INFO] [stdout] [?1049h[H[?25l[?25h[?1049ltest console::tests::test_end_synchronized_capture ... ok
[INFO] [stdout] test console::tests::test_console_options_update_height ... ok
[INFO] [stdout] test console::tests::test_enter_exit_screen_no_hide_cursor ... ok
[INFO] [stdout] test console::tests::test_console_options_with_updates ... ok
[INFO] [stdout] test console::tests::test_export_html_escape ... ok
[INFO] [stdout] Clearable
[INFO] [stdout] test console::tests::test_export_html_inline_styles ... ok
[INFO] [stdout] test console::tests::test_control_show_cursor ... ok
[INFO] [stdout] SVG test
[INFO] [stdout] [1mStyled text[0m
[INFO] [stdout] [1mBold text[0m
[INFO] [stdout] Export me
[INFO] [stdout] test console::tests::test_copy_to_clipboard_capture ... ok
[INFO] [stdout] test console::tests::test_copy_to_clipboard_empty_capture ... ok
[INFO] [stdout] test console::tests::test_console_dimensions_create ... ok
[INFO] [stdout] test console::tests::test_console_options_default ... ok
[INFO] [stdout] test console::tests::test_enter_exit_screen ... ok
[INFO] [stdout] test console::tests::test_copy_to_clipboard_unicode_capture ... ok
[INFO] [stdout] test console::tests::test_export_text_clear ... ok
[INFO] [stdout] test console::tests::test_html_escape_all_entities ... ok
[INFO] [stdout] test console::tests::test_get_style_parse_inline ... ok
[INFO] [stdout] test console::tests::test_export_svg_basic ... ok
[INFO] [stdout] test console::tests::test_export_html_stylesheet ... ok
[INFO] [stdout] test console::tests::test_get_style_invalid ... ok
[INFO] [stdout] test console::tests::test_get_style_from_theme ... ok
[INFO] [stdout] test console::tests::test_export_text_with_styles ... ok
[INFO] [stdout] test console::tests::test_export_text_plain ... ok
[INFO] [stdout] test console::tests::test_input_password_method_exists ... ok
[INFO] [stdout] test console::tests::test_is_dumb_terminal ... ok
[INFO] [stdout] test console::tests::test_line_blank_lines ... ok
[INFO] [stdout] Colored text
[INFO] [stdout] Pager content here
[INFO] [stdout] test console::tests::test_measure_multiline_text ... ok
[INFO] [stdout] test console::tests::test_print_json_invalid_falls_back ... ok
[INFO] [stdout] test console::tests::test_no_color_mode_strips_color ... ok
[INFO] [stdout] test console::tests::test_push_pop_live_nests ... ok
[INFO] [stdout] First
[INFO] [stdout] Second
[INFO] [stdout] test console::tests::test_log_contains_timestamp_and_text ... ok
[INFO] [stdout] test console::tests::test_measure_empty ... ok
[INFO] [stdout] test console::tests::test_print_text_capture ... ok
[INFO] [stdout] test console::tests::test_push_pop_theme ... ok
[INFO] [stdout] test console::tests::test_line_zero ... ok
[INFO] [stdout] test console::tests::test_print_error_basic ... ok
[INFO] [stdout] test console::tests::test_render_buffer_closes_link_on_unlinked_segment ... ok
[INFO] [stdout] test console::tests::test_render_buffer_closes_link_when_url_changes ... ok
[INFO] [stdout] test console::tests::test_record_buffer_accumulation ... ok
[INFO] [stdout] test console::tests::test_render_buffer_coalesces_consecutive_same_link ... ok
[INFO] [stdout] test console::tests::test_render_buffer_control ... ok
[INFO] [stdout] test console::tests::test_render_buffer_plain ... ok
[INFO] [stdout] Pager content here
[INFO] [stdout] test console::tests::test_print_exception ... ok
[INFO] [stdout] test console::tests::test_render_str_with_justify ... ok
[INFO] [stdout] test console::tests::test_render_buffer_link ... ok
[INFO] [stdout] test console::tests::test_render_buffer_no_color ... ok
[INFO] [stdout] test console::tests::test_render_buffer_styled ... ok
[INFO] [stdout] test console::tests::test_quiet_mode ... ok
[INFO] [stdout] test console::tests::test_render_lines_basic ... ok
[INFO] [stdout] test console::tests::test_render_str_plain ... ok
[INFO] [stdout] test console::tests::test_measure_simple_text ... ok
[INFO] [stdout] test console::tests::test_render_buffer_link_only ... ok
[INFO] [stdout] test console::tests::test_pager_with_capture ... ok
[INFO] [stdout] Default title test
[INFO] [stdout] [31mHTML content[0m
[INFO] [stdout] test console::tests::test_render_text ... ok
[INFO] [stdout] test console::tests::test_render_str_with_overflow ... ok
[INFO] [stdout] test console::tests::test_rule_with_title_capture ... ok
[INFO] [stdout] SVG save test
[INFO] [stdout] Save me to a file
[INFO] [stdout] test console::tests::test_renderable_text ... ok
[INFO] [stdout] test console::tests::test_render_str_with_style ... ok
[INFO] [stdout] test console::tests::test_renderable_str ... ok
[INFO] [stdout] test console::tests::test_save_svg_default_title ... ok
[INFO] [stdout] test console::tests::test_save_html_to_file ... ok
[INFO] [stdout] test console::tests::test_save_svg_to_file ... ok
[INFO] [stdout] test console::tests::test_save_text_to_file ... ok
[INFO] [stdout] test console::tests::test_render_str_with_markup ... ok
[INFO] [stdout] test console::tests::test_renderable_string ... ok
[INFO] [stdout] ]0;Test Titletest console::tests::test_request_clipboard_capture ... ok
[INFO] [stdout] test console::tests::test_set_clear_live ... ok
[INFO] [stdout] test console::tests::test_set_window_title_non_terminal ... ok
[INFO] [stdout] test console::tests::test_set_live_none ... ok
[INFO] [stdout] test console::tests::test_rule_no_title_capture ... ok
[INFO] [stdout] test console::tests::test_svg_escape_entities ... ok
[INFO] [stdout] [?1049h[H[6;3Hrow0[7;3Hrow1[8;3Hrow2test console::tests::test_set_window_title_terminal ... ok
[INFO] [stdout] test console::tests::test_synchronized_returns_value ... ok
[INFO] [stdout] test csv_table::tests::test_blank_lines_skipped ... ok
[INFO] [stdout] [?1049h[H[4;11Htest csv_table::tests::test_builder_chain ... ok
[INFO] [stdout] hello
[INFO] [stdout] test console::tests::test_synchronized_wraps_content ... ok
[INFO] [stdout] test console::tests::test_set_live_some_replaces_top ... ok
[INFO] [stdout] test console::tests::test_soft_wrap_builder ... ok
[INFO] [stdout] test console::tests::test_status_convenience ... ok
[INFO] [stdout] test console::tests::test_update_screen_lines_no_op_when_not_in_alt_screen ... ok
[INFO] [stdout] test console::tests::test_update_screen_lines_writes_each_line_at_successive_rows ... ok
[INFO] [stdout] test csv_table::tests::test_empty_csv ... ok
[INFO] [stdout] test console::tests::test_update_screen_writes_at_position_in_alt_screen ... ok
[INFO] [stdout] test csv_table::tests::test_headers_only ... ok
[INFO] [stdout] test console::tests::test_update_screen_no_op_when_not_in_alt_screen ... ok
[INFO] [stdout] test csv_table::tests::test_max_rows ... ok
[INFO] [stdout] test csv_table::tests::test_parse_csv_line_simple ... ok
[INFO] [stdout] test csv_table::tests::test_escaped_quotes ... ok
[INFO] [stdout] test csv_table::tests::test_simple_csv ... ok
[INFO] [stdout] test csv_table::tests::test_single_row ... ok
[INFO] [stdout] test csv_table::tests::test_title ... ok
[INFO] [stdout] test csv_table::tests::test_single_column ... ok
[INFO] [stdout] test csv_table::tests::test_to_table_conversion ... ok
[INFO] [stdout] test csv_table::tests::test_renderable_output ... ok
[INFO] [stdout] test csv_table::tests::test_quoted_fields ... ok
[INFO] [stdout] test diff::tests::test_completely_different_texts ... ok
[INFO] [stdout] test console::tests::test_render_deeply_nested_panels ... ok
[INFO] [stdout] test csv_table::tests::test_commas_in_quotes ... ok
[INFO] [stdout] test csv_table::tests::test_display_trait ... ok
[INFO] [stdout] test csv_table::tests::test_whitespace_only_csv ... ok
[INFO] [stdout] test csv_table::tests::test_header_style ... ok
[INFO] [stdout] test console::tests::test_print_json_valid ... ok
[INFO] [stdout] test diff::tests::test_diffop_equality ... ok
[INFO] [stdout] test diff::tests::test_empty_new_text_all_deletes ... ok
[INFO] [stdout] test diff::tests::test_empty_old_text_all_inserts ... ok
[INFO] [stdout] test diff::tests::test_hunks_single_change ... ok
[INFO] [stdout] test diff::tests::test_hunks_identical_produces_no_hunks ... ok
[INFO] [stdout] test diff::tests::test_display_trait ... ok
[INFO] [stdout] test diff::tests::test_identical_texts_no_changes ... ok
[INFO] [stdout] test csv_table::tests::test_measure ... ok
[INFO] [stdout] test diff::tests::test_identical_texts_unified_empty ... ok
[INFO] [stdout] test diff::tests::test_labels ... ok
[INFO] [stdout] test csv_table::tests::test_parse_csv_line_empty_fields ... ok
[INFO] [stdout] test csv_table::tests::test_parse_csv_line_escaped_quote ... ok
[INFO] [stdout] test csv_table::tests::test_parse_csv_line_quoted ... ok
[INFO] [stdout] test csv_table::tests::test_to_table_with_title_and_limit ... ok
[INFO] [stdout] test diff::tests::test_pad_or_truncate_helper ... ok
[INFO] [stdout] test diff::tests::test_lcs_correctness ... ok
[INFO] [stdout] test diff::tests::test_both_empty ... ok
[INFO] [stdout] test diff::tests::test_context_lines_parameter ... ok
[INFO] [stdout] test diff::tests::test_measure_side_by_side ... ok
[INFO] [stdout] test diff::tests::test_single_line_added ... ok
[INFO] [stdout] test diff::tests::test_single_line_changed ... ok
[INFO] [stdout] test diff::tests::test_renderable_unified ... ok
[INFO] [stdout] test diff::tests::test_single_line_removed ... ok
[INFO] [stdout] test diff::tests::test_renderable_side_by_side ... ok
[INFO] [stdout] test diff::tests::test_side_by_side_builder ... ok
[INFO] [stdout] test diff::tests::test_measure_unified ... ok
[INFO] [stdout] test diff::tests::test_multiple_changes_with_context ... ok
[INFO] [stdout] test diff::tests::test_side_by_side_output_format ... ok
[INFO] [stdout] test diff::tests::test_trailing_newline_handling ... ok
[INFO] [stdout] test diff::tests::test_truncate_to_width_helper ... ok
[INFO] [stdout] test diff::tests::test_unified_builder ... ok
[INFO] [stdout] test diff::tests::test_unified_output_format ... ok
[INFO] [stdout] test diff::tests::test_whitespace_only_changes ... ok
[INFO] [stdout] test diff::tests::test_with_style_builder ... ok
[INFO] [stdout] test error::logging_handler::tests::enable_link_path_disabled_has_no_link ... ok
[INFO] [stdout] test error::logging_handler::tests::omit_repeated_times_blanks_duplicate_timestamps ... ok
[INFO] [stdout] test error::logging_handler::tests::test_builder_show_path ... ok
[INFO] [stdout] test error::logging_handler::tests::enable_link_path_wraps_module_in_osc8_link ... ok
[INFO] [stdout] test error::logging_handler::tests::test_debug_style_is_bold_blue ... ok
[INFO] [stdout] test error::logging_handler::tests::omit_repeated_times_disabled_keeps_timestamp ... ok
[INFO] [stdout] test diff::tests::test_large_text_100_lines ... ok
[INFO] [stdout] test error::logging_handler::tests::test_builder_show_time ... ok
[INFO] [stdout] test error::logging_handler::tests::test_default_construction ... ok
[INFO] [stdout] test error::logging_handler::tests::gilt_tracebacks_builder_sets_field ... ok
[INFO] [stdout] test error::logging_handler::tests::test_builder_keywords ... ok
[INFO] [stdout] test error::logging_handler::tests::test_builder_markup ... ok
[INFO] [stdout] test error::logging_handler::tests::test_default_keywords_present ... ok
[INFO] [stdout] test error::logging_handler::tests::test_info_style_is_bold_green ... ok
[INFO] [stdout] test error::logging_handler::tests::test_install_returns_result ... ok
[INFO] [stdout] test error::logging_handler::tests::test_error_style_is_bold_red ... ok
[INFO] [stdout] test error::logging_handler::tests::test_builder_show_level ... ok
[INFO] [stdout] test error::logging_handler::tests::test_builder_console ... ok
[INFO] [stdout] test error::logging_handler::tests::test_default_trait ... ok
[INFO] [stdout] test error::logging_handler::tests::test_log_trait_enabled_always_true ... ok
[INFO] [stdout] test error::logging_handler::tests::test_level_styles_all_present ... ok
[INFO] [stdout] test error::logging_handler::tests::test_log_trait_flush_does_not_panic ... ok
[INFO] [stdout] test error::logging_handler::tests::test_no_keyword_highlighting_when_empty ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_level_debug ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_level_error ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_level_has_style ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_level_trace ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_level_info ... ok
[INFO] [stdout] test error::logging_handler::tests::test_keyword_highlighting ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_level_warn ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_message_plain ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_message_with_markup ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_path_has_dim_style ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_time_format ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_path_with_module ... ok
[INFO] [stdout] test error::logging_handler::tests::test_warn_style_is_bold_yellow ... ok
[INFO] [stdout] test error::logging_handler::tests::test_trace_style_is_dim ... ok
[INFO] [stdout] test error::tests::test_all_errors_implement_debug ... ok
[INFO] [stdout] test error::tests::test_cell_error_invalid_width ... ok
[INFO] [stdout] test error::tests::test_cell_error_is_error_trait ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_component_out_of_range ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_clone ... ok
[INFO] [stdout] test error::tests::test_cell_error_unicode ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_equality ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_invalid_hex ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_invalid_spec ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_invalid_rgb ... ok
[INFO] [stdout] test error::tests::test_console_error_clone ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_is_error_trait ... ok
[INFO] [stdout] test error::tests::test_color_parse_error_unknown_name ... ok
[INFO] [stdout] test error::tests::test_console_error_generic ... ok
[INFO] [stdout] test error::tests::test_console_error_is_error_trait ... ok
[INFO] [stdout] test error::tests::test_console_error_live_error ... ok
[INFO] [stdout] test error::tests::test_console_error_no_alt_screen ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_time_has_dim_style ... ok
[INFO] [stdout] test error::logging_handler::tests::test_render_path_without_module ... ok
[INFO] [stdout] test error::tests::test_console_error_markup_error ... ok
[INFO] [stdout] test error::tests::test_cell_error_clone ... ok
[INFO] [stdout] test error::tests::test_palette_error_clone ... ok
[INFO] [stdout] test error::tests::test_console_error_not_renderable ... ok
[INFO] [stdout] test error::tests::test_different_error_types_not_equal ... ok
[INFO] [stdout] test error::tests::test_console_error_render_error ... ok
[INFO] [stdout] test error::tests::test_palette_error_invalid_index ... ok
[INFO] [stdout] test error::tests::test_segment_error_clone ... ok
[INFO] [stdout] test console::tests::test_console_builder_width ... ok
[INFO] [stdout] test error::tests::test_segment_error_invalid_segment ... ok
[INFO] [stdout] test error::tests::test_segment_error_is_error_trait ... ok
[INFO] [stdout] test error::tests::test_palette_error_not_available ... ok
[INFO] [stdout] test error::tests::test_palette_error_is_error_trait ... ok
[INFO] [stdout] test error::tests::test_error_source_chain ... ok
[INFO] [stdout] test error::tests::test_segment_error_processing ... ok
[INFO] [stdout] test error::tests::test_style_error_invalid_syntax ... ok
[INFO] [stdout] test error::tests::test_style_error_unknown_attribute ... ok
[INFO] [stdout] test error::tests::test_style_error_invalid_combination ... ok
[INFO] [stdout] test error::traceback::tests::suppress_all_frames_shows_placeholder ... ok
[INFO] [stdout] test error::traceback::tests::suppress_path_matches_anywhere_in_filename ... ok
[INFO] [stdout] test error::tests::test_style_error_is_error_trait ... ok
[INFO] [stdout] test error::traceback::tests::suppress_empty_passes_all_frames ... ok
[INFO] [stdout] test error::traceback::tests::suppress_paths_filters_matching_frames ... ok
[INFO] [stdout] test error::traceback::tests::test_default_values ... ok
[INFO] [stdout] test error::traceback::tests::test_display_complete_traceback ... ok
[INFO] [stdout] test error::traceback::tests::test_display_empty ... ok
[INFO] [stdout] test error::traceback::tests::test_builder_methods ... ok
[INFO] [stdout] test error::traceback::tests::test_debug_trait ... ok
[INFO] [stdout] test error::traceback::tests::test_default_trait ... ok
[INFO] [stdout] test error::tests::test_style_error_missing_style ... ok
[INFO] [stdout] test error::tests::test_style_error_stack_error ... ok
[INFO] [stdout] test error::traceback::tests::test_display_with_title_and_message ... ok
[INFO] [stdout] test error::tests::test_style_error_clone ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_new ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_clone ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_equality ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_read_source_line_no_lineno ... ok
[INFO] [stdout] test error::traceback::tests::test_error_type_name_from_debug ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_read_source_line_zero_lineno ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_read_source_line_already_set ... ok
[INFO] [stdout] test error::traceback::tests::test_display_with_frames ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_with_source_line ... ok
[INFO] [stdout] test error::traceback::tests::test_from_backtrace_empty ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_display_with_lineno ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_display_without_lineno ... ok
[INFO] [stdout] test error::traceback::tests::test_frame_read_source_line_nonexistent_file ... ok
[INFO] [stdout] test error::traceback::tests::test_from_error_simple ... ok
[INFO] [stdout] test error::traceback::tests::test_max_frames_limit ... ok
[INFO] [stdout] test error::traceback::tests::test_from_backtrace ... ok
[INFO] [stdout] test error::traceback::tests::test_max_frames_not_truncated_when_under_limit ... ok
[INFO] [stdout] test error::traceback::tests::test_from_error_chain ... ok
[INFO] [stdout] test error::traceback::tests::test_from_panic ... ok
[INFO] [stdout] test error::traceback::tests::test_parse_backtrace_empty ... ok
[INFO] [stdout] test error::traceback::tests::test_parse_backtrace_multiple_frames ... ok
[INFO] [stdout] ERROR    msg
[INFO] [stdout] bare message
[INFO] [stdout] test error::traceback::tests::test_parse_backtrace_varying_whitespace ... ok
[INFO] [stdout] test error::traceback::tests::test_parse_backtrace_frame_without_location ... ok
[INFO] [stdout] test error::traceback::tests::test_parse_backtrace_single_frame ... ok
[INFO] [stdout] test error::traceback::tests::test_renderable_contains_title ... ok
[INFO] [stdout] test error::traceback::tests::test_parse_backtrace_with_column ... ok
[INFO] [stdout] test error::traceback::tests::test_parse_backtrace_with_noise ... ok
[INFO] [stdout] test error::logging_handler::tests::test_full_line_minimal_columns ... ok
[INFO] [stdout] test error::traceback::tests::test_renderable_empty_traceback ... ok
[INFO] [stdout] test error::traceback::tests::test_renderable_contains_frame_info ... ok
[INFO] [stdout] test error::traceback::tests::test_renderable_produces_segments ... ok
[INFO] [stdout] test error::traceback::tests::test_traceback_manual_frames ... ok
[INFO] [stdout] test figlet::tests::test_empty_string ... ok
[INFO] [stdout] test figlet::tests::test_measure_empty ... ok
[INFO] [stdout] test figlet::tests::test_measure_multiple_chars ... ok
[INFO] [stdout] test figlet::tests::test_display_empty ... ok
[INFO] [stdout] test error::traceback::tests::test_renderable_with_width ... ok
[INFO] [stdout] test error::traceback::tests::test_renderable_wrapped_in_panel ... ok
[INFO] [stdout] test figlet::tests::test_display_trait ... ok
[INFO] [stdout] test figlet::tests::test_digits ... ok
[INFO] [stdout] test figlet::tests::test_lowercase_maps_to_uppercase ... ok
[INFO] [stdout] test figlet::tests::test_full_uppercase_alphabet ... ok
[INFO] [stdout] test figlet::tests::test_single_character_pixels ... ok
[INFO] [stdout] test figlet::tests::test_punctuation ... ok
[INFO] [stdout] test figlet::tests::test_space_is_blank ... ok
[INFO] [stdout] test figlet::tests::test_style_application ... ok
[INFO] [stdout] test figlet::tests::test_rendered_width ... ok
[INFO] [stdout] hello world
[INFO] [stdout] test error::logging_handler::tests::test_emit_no_level ... ok
[INFO] [stdout] test figlet::tests::test_space_handling ... ok
[INFO] [stdout] test figlet::tests::test_measure_single_char ... ok
[INFO] [stdout] test figlet::tests::test_multiple_characters ... ok
[INFO] [stdout] test gradient::tests::test_empty_text_produces_empty_segments ... ok
[INFO] [stdout] test figlet::tests::test_width_constraint_no_split ... ok
[INFO] [stdout] test figlet::tests::test_single_character ... ok
[INFO] [stdout] test figlet::tests::test_renderable_produces_segments ... ok
[INFO] [stdout] test gradient::tests::test_display_trait_works ... ok
[INFO] [stdout] test gradient::tests::test_interpolation_at_midpoint ... ok
[INFO] [stdout] test gradient::tests::test_builder_methods ... ok
[INFO] [stdout] test gradient::tests::test_interpolation_at_one ... ok
[INFO] [stdout] test figlet::tests::test_unknown_character_fallback ... ok
[INFO] [stdout] INFO     log trait test
[INFO] [stdout] test gradient::tests::test_gradient_with_newlines ... ok
[INFO] [stdout] test error::logging_handler::tests::test_log_trait_log_produces_output ... ok
[INFO] [stdout] test gradient::tests::test_interpolation_clamped ... ok
[INFO] [stdout] test gradient::tests::test_no_colors_uses_default ... ok
[INFO] [stdout] test gradient::tests::test_two_color_gradient_segment_count ... ok
[INFO] [stdout] test gradient::tests::test_rainbow_gradient_works ... ok
[INFO] [stdout] test gradient::tests::test_interpolation_at_zero ... ok
[INFO] [stdout] test figlet::tests::test_width_constraint ... ok
[INFO] [stdout] test gradient::tests::test_multi_stop_gradient_distributes_evenly ... ok
[INFO] [stdout] test gradient::tests::test_single_color_stop ... ok
[INFO] [stdout] test gradient::tests::test_single_character_text ... ok
[INFO] [stdout] test json::tests::test_custom_indent_4 ... ok
[INFO] [stdout] test json::tests::test_compact_json ... ok
[INFO] [stdout] test json::tests::test_highlight_disabled ... ok
[INFO] [stdout] test json::tests::test_highlight_enabled ... ok
[INFO] [stdout] test json::tests::test_invalid_json ... ok
[INFO] [stdout] test json::tests::test_default_indent_is_pretty ... ok
[INFO] [stdout] test json::tests::test_json_error_display ... ok
[INFO] [stdout] test json::tests::test_empty_object ... ok
[INFO] [stdout] test json::tests::test_keys_vs_values_spans ... ok
[INFO] [stdout] test json::tests::test_json_unicode ... ok
[INFO] [stdout] test json::tests::test_json_string_escapes ... ok
[INFO] [stdout] test json::tests::test_nested_structures ... ok
[INFO] [stdout] test json::tests::test_null_highlighted ... ok
[INFO] [stdout] test json::tests::test_options_builder_chain ... ok
[INFO] [stdout] test json::tests::test_no_wrap_set ... ok
[INFO] [stdout] test json::tests::test_overflow_is_none ... ok
[INFO] [stdout] test json::tests::test_simple_array ... ok
[INFO] [stdout] test json::tests::test_custom_indent_1 ... ok
[INFO] [stdout] test json::tests::test_renderable_integration ... ok
[INFO] [stdout] test json::tests::test_empty_array ... ok
[INFO] [stdout] test json::tests::test_from_value_array ... ok
[INFO] [stdout] test json::tests::test_booleans_highlighted ... ok
[INFO] [stdout] INFO     hello world
[INFO] [stdout] test layout::tests::test_column_splitter_divide_offsets ... ok
[INFO] [stdout] test layout::tests::test_column_splitter_divide_equal ... ok
[INFO] [stdout] test json::tests::test_from_value ... ok
[INFO] [stdout] test json::tests::test_sorted_keys_nested ... ok
[INFO] [stdout] WARN     msg
[INFO] [stdout] test json::tests::test_simple_object ... ok
[INFO] [stdout] test layout::tests::test_add_split ... ok
[INFO] [stdout] test json::tests::test_sorted_keys ... ok
[INFO] [stdout] test error::logging_handler::tests::test_emit_no_time ... ok
[INFO] [stdout] test layout::tests::test_column_splitter_divide_unequal ... ok
[INFO] [stdout] test json::tests::test_complex_json ... ok
[INFO] [stdout] test json::tests::test_display_trait ... ok
[INFO] [stdout] test layout::tests::test_column_splitter_divide_with_fixed_size ... ok
[INFO] [stdout] test layout::tests::test_column_splitter_name ... ok
[INFO] [stdout] test layout::tests::test_column_splitter_three_children ... ok
[INFO] [stdout] test layout::tests::test_edge_impl_fixed ... ok
[INFO] [stdout] test layout::tests::test_edge_impl_flexible ... ok
[INFO] [stdout] test layout::tests::test_effective_renderable_none ... ok
[INFO] [stdout] test layout::tests::test_effective_renderable_leaf ... ok
[INFO] [stdout] test layout::tests::test_effective_renderable_with_children ... ok
[INFO] [stdout] test layout::tests::test_display_trait ... ok
[INFO] [stdout] test layout::tests::test_get_child ... ok
[INFO] [stdout] test layout::tests::test_get_not_found ... ok
[INFO] [stdout] test layout::tests::test_get_self ... ok
[INFO] [stdout] test layout::tests::test_get_mut_update ... ok
[INFO] [stdout] test layout::tests::test_make_region_map_nested ... ok
[INFO] [stdout] test layout::tests::test_get_nested ... ok
[INFO] [stdout] test layout::tests::test_layout_default_layout ... ok
[INFO] [stdout] test layout::tests::test_make_region_map_single ... ok
[INFO] [stdout] test layout::tests::test_layout_clone ... ok
[INFO] [stdout] test layout::tests::test_layout_new_defaults ... ok
[INFO] [stdout] test layout::tests::test_make_region_map_two_columns ... ok
[INFO] [stdout] test layout::tests::test_layout_size_ratio_minimum_size ... ok
[INFO] [stdout] test layout::tests::test_layout_new_with_values ... ok
[INFO] [stdout] test layout::tests::test_layout_visible_false ... ok
[INFO] [stdout] test layout::tests::test_make_region_map_hidden_child ... ok
[INFO] [stdout] test layout::tests::test_placeholder_text_without_name ... ok
[INFO] [stdout] test layout::tests::test_row_splitter_divide_equal ... ok
[INFO] [stdout] test layout::tests::test_placeholder_text_with_name ... ok
[INFO] [stdout] test layout::tests::test_render_two_column_split ... ok
[INFO] [stdout] test layout::tests::test_row_splitter_divide_unequal ... ok
[INFO] [stdout] test layout::tests::test_row_splitter_divide_with_fixed_size ... ok
[INFO] [stdout] test layout::tests::test_row_splitter_name ... ok
[INFO] [stdout] test layout::tests::test_split ... ok
[INFO] [stdout] test layout::tests::test_split_column ... ok
[INFO] [stdout] test layout::tests::test_split_replaces_children ... ok
[INFO] [stdout] test layout::tests::test_split_row ... ok
[INFO] [stdout] test layout::tests::test_row_splitter_divide_offsets ... ok
[INFO] [stdout] test layout::tests::test_row_splitter_three_children ... ok
[INFO] [stdout] test layout::tests::test_make_region_map_two_rows ... ok
[INFO] [stdout] test layout::tests::test_splitter_type_make_splitter ... ok
[INFO] [stdout] test layout::tests::test_update ... ok
[INFO] [stdout] test layout::tests::test_renderable_produces_correct_height ... ok
[INFO] [stdout] test layout::tests::test_renderable_single_layout ... ok
[INFO] [stdout] test layout::tests::test_render_single_layout ... ok
[INFO] [stdout] test layout::tests::test_render_two_row_split ... ok
[INFO] [stdout] test layout::tests::test_splitter_type_name ... ok
[INFO] [stdout] test layout::tests::test_visible_children_all_hidden ... ok
[INFO] [stdout] test layout::tests::test_unsplit ... ok
[INFO] [stdout] test layout::tests::test_render_nested_grid ... ok
[INFO] [stdout] test layout::tests::test_visible_children_some_hidden ... ok
[INFO] [stdout] test layout::tests::test_visible_children_all_visible ... ok
[INFO] [stdout] test live::live_render::tests::test_last_render_height_before_render ... ok
[INFO] [stdout] test live::live_render::tests::test_no_overflow_when_fits ... ok
[INFO] [stdout] test live::live_render::tests::test_position_cursor_single_line ... ok
[INFO] [stdout] test live::live_render::tests::test_last_render_height_after_render ... ok
[INFO] [stdout] test live::live_render::tests::test_renderable_basic ... ok
[INFO] [stdout] test live::live_render::tests::test_renderable_multiline ... ok
[INFO] [stdout] test live::live_render::tests::test_default_construction ... ok
[INFO] [stdout] test live::live_render::tests::test_restore_cursor_no_render ... ok
[INFO] [stdout] test live::live_render::tests::test_position_cursor_after_render ... ok
[INFO] [stdout] test json::tests::test_numbers_highlighted ... ok
[INFO] [stdout] test live::live_render::tests::test_vertical_overflow_method_variants ... ok
[INFO] [stdout] test live::live_render::tests::test_restore_cursor_single_line ... ok
[INFO] [stdout] test live::live_render::tests::test_set_renderable ... ok
[INFO] [stdout] test live::live_render::tests::test_render_with_style ... ok
[INFO] [stdout] test live::live_render::tests::test_vertical_overflow_crop ... ok
[INFO] [stdout] test live::live_render::tests::test_with_style ... ok
[INFO] [stdout] test live::screen::tests::test_default_construction ... ok
[INFO] [stdout] test live::live_render::tests::test_with_vertical_overflow ... ok
[INFO] [stdout] test live::screen::tests::test_content_shorter_than_height_is_padded ... ok
[INFO] [stdout] test live::live_render::tests::test_vertical_overflow_visible ... ok
[INFO] [stdout] test live::live_render::tests::test_shape_tracking ... ok
[INFO] [stdout] test live::screen::tests::test_loop_last_single ... ok
[INFO] [stdout] test live::screen::tests::test_loop_last_helper ... ok
[INFO] [stdout] test live::screen::tests::test_empty_content ... ok
[INFO] [stdout] test live::screen::tests::test_newlines_between_lines_not_after_last ... ok
[INFO] [stdout] test live::screen::tests::test_normal_mode_uses_lf ... ok
[INFO] [stdout] test live::screen::tests::test_multiline_content_cropped_to_height ... ok
[INFO] [stdout] hello mymod:7
[INFO] [stdout] INFO     msg
[INFO] [stdout] test live::screen::tests::test_render_exact_dimensions ... ok
[INFO] [stdout] test live::screen::tests::test_loop_last_empty ... ok
[INFO] [stdout] test live::screen::tests::test_with_style ... ok
[INFO] [stdout] test live::screen::tests::test_with_application_mode ... ok
[INFO] [stdout] test live::tests::live_stop_with_no_render_emits_no_newline ... ok
[INFO] [stdout] test error::logging_handler::tests::test_emit_with_path ... ok
[INFO] [stdout] test live::tests::live_stop_after_render_emits_newline ... ok
[INFO] [stdout] test live::live_render::tests::test_position_cursor_no_render ... ok
[INFO] [stdout] test live::live_render::tests::test_restore_cursor_after_render ... ok
[INFO] [stdout] test live::screen::tests::test_application_mode_uses_cr ... ok
[INFO] [stdout] test live::live_render::tests::test_vertical_overflow_ellipsis ... ok
[INFO] [stdout] test live::tests::test_console_mut_accessor ... ok
[INFO] [stdout] test live::tests::test_default_construction ... ok
[INFO] [stdout] test live::tests::test_drop_calls_stop ... ok
[INFO] [stdout] test live::tests::test_get_renderable_callback_used_on_refresh ... ok
[INFO] [stdout] test live::tests::test_console_accessor ... ok
[INFO] [stdout] test live::tests::test_no_refresh_thread_when_disabled ... ok
[INFO] [stdout] test live::tests::test_refresh_before_start ... ok
[INFO] [stdout] test live::tests::test_double_start_is_noop ... ok
[INFO] [stdout] test live::tests::test_full_builder_chain ... ok
[INFO] [stdout] test live::tests::test_manual_refresh ... ok
[INFO] [stdout] test live::tests::test_double_stop_is_noop ... ok
[INFO] [stdout] test live::tests::test_screen_mode_flag ... ok
[INFO] [stdout] test live::tests::test_drop_without_start_does_not_panic ... ok
[INFO] [stdout] test live::tests::test_renderable_returns_current ... ok
[INFO] [stdout] hello world
[INFO] [stdout] test live::tests::test_start_stop_start_again ... ok
[INFO] [stdout] 21:48:39 INFO     Server starting my_app::server:42
[INFO] [stdout] test live::tests::test_screen_mode_start_stop ... ok
[INFO] [stdout] test live::tests::test_transient_mode_flag ... ok
[INFO] [stdout] test error::logging_handler::tests::test_emit_no_path ... ok
[INFO] [stdout] test live::tests::test_construction_stores_renderable ... ok
[INFO] [stdout] test live::tests::test_update_also_updates_live_render ... ok
[INFO] [stdout] test live::tests::test_update_alias ... ok
[INFO] [stdout] test live::tests::test_transient_stop_does_not_panic ... ok
[INFO] [stdout] test error::logging_handler::tests::test_full_line_with_all_columns ... ok
[INFO] [stdout] test live::tests::test_stop_without_start_is_noop ... ok
[INFO] [stdout] test live::tests::test_start_stop ... ok
[INFO] [stdout] test live::tests::test_update_before_start ... ok
[INFO] [stdout] test live::tests::test_update_renderable_changes_content ... ok
[INFO] [stdout] test live::tests::test_vertical_overflow_ellipsis_default ... ok
[INFO] [stdout] test live::tests::test_update_with_refresh ... ok
[INFO] [stdout] test live::tests::test_with_refresh_per_second ... ok
[INFO] [stdout] test live::tests::test_with_transient ... ok
[INFO] [stdout] test live::tests::test_with_vertical_overflow ... ok
[INFO] [stdout] test live::tests::test_with_auto_refresh ... ok
[INFO] [stdout] test live::tests::test_with_console ... ok
[INFO] [stdout] test live::tests::test_with_get_renderable ... ok
[INFO] [stdout] test live::tests::test_with_screen ... ok
[INFO] [stdout] test live::tests::test_vertical_overflow_visible ... ok
[INFO] [stdout] test markdown::tests::inline_code_outside_table_still_works ... ok
[INFO] [stdout] test markdown::tests::test_block_quote ... ok
[INFO] [stdout] test markdown::tests::inline_code_between_text_in_table_cell_preserves_order ... ok
[INFO] [stdout] test markdown::tests::inline_code_in_table_cell_keeps_style ... ok
[INFO] [stdout] test markdown::tests::test_builder_code_theme ... ok
[INFO] [stdout] test markdown::tests::test_bold_text ... ok
[INFO] [stdout] test markdown::tests::test_builder_hyperlinks ... ok
[INFO] [stdout] test markdown::tests::test_builder_justify ... ok
[INFO] [stdout] test markdown::tests::test_blockquote_multiple_paragraphs ... ok
[INFO] [stdout] test markdown::tests::test_code_block ... ok
[INFO] [stdout] test markdown::tests::test_code_block_has_panel_border ... ok
[INFO] [stdout] test markdown::tests::test_all_heading_levels ... ok
[INFO] [stdout] test markdown::tests::test_code_block_with_language ... ok
[INFO] [stdout] test markdown::tests::inline_code_in_table_cell_is_rendered ... ok
[INFO] [stdout] test markdown::tests::test_bold_italic_combined ... ok
[INFO] [stdout] test markdown::tests::test_constructor_defaults ... ok
[INFO] [stdout] DEBUG    msg
[INFO] [stdout] test markdown::tests::test_display_trait ... ok
[INFO] [stdout] test markdown::tests::test_empty_markdown ... ok
[INFO] [stdout] test markdown::tests::test_h2_has_rule_underline ... ok
[INFO] [stdout] test markdown::tests::test_hard_break ... ok
[INFO] [stdout] test markdown::tests::test_h1_has_rule_underline ... ok
[INFO] [stdout] test markdown::tests::test_heading_h1 ... ok
[INFO] [stdout] test markdown::tests::test_heading_h2 ... ok
[INFO] [stdout] test markdown::tests::test_heading_h3 ... ok
[INFO] [stdout] test markdown::tests::test_heading_h5 ... ok
[INFO] [stdout] test markdown::tests::test_heading_h6 ... ok
[INFO] [stdout] test markdown::tests::test_inline_code ... ok
[INFO] [stdout] test markdown::tests::test_italic_text ... ok
[INFO] [stdout] test markdown::tests::test_link_with_url ... ok
[INFO] [stdout] test markdown::tests::test_headings_have_appropriate_styles ... ok
[INFO] [stdout] test markdown::tests::test_horizontal_rule ... ok
[INFO] [stdout] test markdown::tests::test_heading_h4 ... ok
[INFO] [stdout] test markdown::tests::test_list_with_inline_formatting ... ok
[INFO] [stdout] test markdown::tests::test_mixed_content ... ok
[INFO] [stdout] test markdown::tests::test_image ... ok
[INFO] [stdout] test markdown::tests::test_link_without_url_display ... ok
[INFO] [stdout] test markdown::tests::test_ordered_list ... ok
[INFO] [stdout] test markdown::tests::test_renderable_integration ... ok
[INFO] [stdout] test markdown::tests::test_narrow_width ... ok
[INFO] [stdout] test markdown::tests::test_nested_list ... ok
[INFO] [stdout] test markdown::tests::test_simple_paragraph ... ok
[INFO] [stdout] test markdown::tests::test_soft_break ... ok
[INFO] [stdout] test markdown::tests::test_whitespace_only ... ok
[INFO] [stdout] test markdown::tests::test_strikethrough ... ok
[INFO] [stdout] test markdown::tests::test_renderable_through_console_render ... ok
[INFO] [stdout] test markup::tests::test_escape_already_escaped ... ok
[INFO] [stdout] test markup::tests::test_escape_backslash_end ... ok
[INFO] [stdout] test markdown::tests::test_two_paragraphs ... ok
[INFO] [stdout] test live::tests::test_drop_with_auto_refresh_cleans_up ... ok
[INFO] [stdout] test markup::tests::test_escape_at_tag ... ok
[INFO] [stdout] test markup::tests::test_escape_escape_single_backslash ... ok
[INFO] [stdout] test markdown::tests::test_table ... ok
[INFO] [stdout] test markdown::tests::test_table_with_alignment ... ok
[INFO] [stdout] test markdown::tests::test_unordered_list ... ok
[INFO] [stdout] test markup::tests::test_escape_basic_tag ... ok
[INFO] [stdout] test markup::tests::test_markup_error_mismatched_explicit ... ok
[INFO] [stdout] test markup::tests::test_escape_escape_double_backslash ... ok
[INFO] [stdout] test markdown::tests::test_output_has_trailing_content ... ok
[INFO] [stdout] test markup::tests::test_markup_error_nothing_to_close ... ok
[INFO] [stdout] test markup::tests::test_escape_not_a_tag ... ok
[INFO] [stdout] test markup::tests::test_markup_error_mismatched_tags ... ok
[INFO] [stdout] test markup::tests::test_render_basic ... ok
[INFO] [stdout] test markup::tests::test_render_close_ambiguous ... ok
[INFO] [stdout] test markup::tests::test_parse_markup_escaped_tag ... ok
[INFO] [stdout] test markup::tests::test_parse_with_params ... ok
[INFO] [stdout] test markup::tests::test_parse_plain_only ... ok
[INFO] [stdout] test markup::tests::test_render_empty_markup ... ok
[INFO] [stdout] test markup::tests::test_render_link ... ok
[INFO] [stdout] test markup::tests::test_render_implicit_close ... ok
[INFO] [stdout] test markup::tests::test_render_combine ... ok
[INFO] [stdout] test markup::tests::test_render_no_markup ... ok
[INFO] [stdout] test markup::tests::test_render_link_with_style ... ok
[INFO] [stdout] test markup::tests::test_render_nested_same_style ... ok
[INFO] [stdout] test markup::tests::test_render_not_tags ... ok
[INFO] [stdout] test markup::tests::test_render_link_url ... ok
[INFO] [stdout] test markup::tests::test_render_overlap ... ok
[INFO] [stdout] test markup::tests::test_render_link_implicit_close ... ok
[INFO] [stdout] test markup::tests::test_render_at_event_tag ... ok
[INFO] [stdout] test markup::tests::test_tag_markup_no_params ... ok
[INFO] [stdout] test markup::tests::test_render_theme_name_fallback ... ok
[INFO] [stdout] test markup::tests::test_render_unclosed_tags ... ok
[INFO] [stdout] test markup::tests::test_render_with_base_style ... ok
[INFO] [stdout] test markup::tests::test_tag_display_no_params ... ok
[INFO] [stdout] test markup::tests::test_tag_display_with_params ... ok
[INFO] [stdout] test markup::tests::test_tag_markup_with_params ... ok
[INFO] [stdout] test measure::tests::test_clamp ... ok
[INFO] [stdout] test measure::tests::test_display ... ok
[INFO] [stdout] test measure::tests::test_add ... ok
[INFO] [stdout] test markup::tests::test_parse_basic ... ok
[INFO] [stdout] test measure::tests::test_new ... ok
[INFO] [stdout] test measure::tests::test_with_minimum ... ok
[INFO] [stdout] test pager::tests::test_default_command ... ok
[INFO] [stdout] test measure::tests::test_normalize ... ok
[INFO] [stdout] test measure::tests::test_with_maximum ... ok
[INFO] [stdout] test pager::tests::test_default_trait ... ok
[INFO] [stdout] test pager::tests::test_pager_error_from_io ... ok
[INFO] [stdout] test pager::tests::test_pager_error_is_error_trait ... ok
[INFO] [stdout] test pager::tests::test_parse_command_empty ... ok
[INFO] [stdout] test pager::tests::test_parse_command_simple ... ok
[INFO] [stdout] test pager::tests::test_parse_command_with_args ... ok
[INFO] [stdout] test pager::tests::test_parse_command_whitespace_only ... ok
[INFO] [stdout] test pager::tests::test_pager_error_debug ... ok
[INFO] [stdout] test pager::tests::test_show_empty_command ... ok
[INFO] [stdout] test pager::tests::test_pager_error_display_io ... ok
[INFO] [stdout] test pager::tests::test_pager_error_display_not_found ... ok
[INFO] [stdout] test pager::tests::test_pager_command_field_public ... ok
[INFO] [stdout] test pager::tests::test_with_command_chaining ... ok
[INFO] [stdout] test panel::tests::test_ascii_box ... ok
[INFO] [stdout] test panel::tests::test_border_style_applied ... ok
[INFO] [stdout] test panel::tests::test_builder_chain ... ok
[INFO] [stdout] test panel::tests::test_centered_title ... ok
[INFO] [stdout] test panel::tests::test_centered_title_padded_with_spaces ... ok
[INFO] [stdout] test measure::tests::test_span ... ok
[INFO] [stdout] test pager::tests::test_with_command ... ok
[INFO] [stdout] Hello 😀 world ☃ éèêxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxtest panel::tests::test_custom_padding ... ok
[INFO] [stdout] test panel::tests::test_custom_width ... ok
[INFO] [stdout] test pager::tests::test_show_unicode_content ... ok
[INFO] [stdout] test pager::tests::test_show_with_true_command ... ok
[INFO] [stdout] Hello, pager!test pager::tests::test_show_large_content ... ok
[INFO] [stdout] test pager::tests::test_show_nonexistent_pager ... ok
[INFO] [stdout] test pager::tests::test_show_empty_content ... ok
[INFO] [stdout] test panel::tests::test_empty_content ... ok
[INFO] [stdout] test panel::tests::test_display_trait ... ok
[INFO] [stdout] test panel::tests::test_display_with_width ... ok
[INFO] [stdout] test pager::tests::test_show_with_echo_cat ... ok
[INFO] [stdout] test panel::tests::test_double_box ... ok
[INFO] [stdout] test panel::tests::test_fit_panel ... ok
[INFO] [stdout] test panel::tests::test_fit_panel_no_title ... ok
[INFO] [stdout] test panel::tests::test_measure_default ... ok
[INFO] [stdout] test panel::tests::test_heavy_box ... ok
[INFO] [stdout] test panel::tests::test_measure_with_fixed_width ... ok
[INFO] [stdout] test panel::tests::test_no_title ... ok
[INFO] [stdout] test panel::tests::test_measure_with_padding ... ok
[INFO] [stdout] test panel::tests::test_left_aligned_title ... ok
[INFO] [stdout] test panel::tests::test_no_title_width_fills ... ok
[INFO] [stdout] test panel::tests::test_fit_panel_wider_title ... ok
[INFO] [stdout] test panel::tests::test_panel_cjk_content ... ok
[INFO] [stdout] test panel::tests::test_panel_highlight_flag ... ok
[INFO] [stdout] test panel::tests::test_fixed_height ... ok
[INFO] [stdout] test panel::tests::test_panel_emoji_title ... ok
[INFO] [stdout] test panel::tests::test_panel_consistency_all_lines_same_width ... ok
[INFO] [stdout] test panel::tests::test_panel_width_one ... ok
[INFO] [stdout] test panel::tests::test_panel_highlight_builder ... ok
[INFO] [stdout] test panel::tests::test_multiline_content ... ok
[INFO] [stdout] test panel::tests::test_right_aligned_title ... ok
[INFO] [stdout] test panel::tests::test_square_box ... ok
[INFO] [stdout] test panel::tests::test_panel_width_zero ... ok
[INFO] [stdout] test panel::tests::test_subtitle ... ok
[INFO] [stdout] test panel::tests::test_title_truncation ... ok
[INFO] [stdout] test panel::tests::test_subtitle_left_aligned ... ok
[INFO] [stdout] test progress::core::tests::open_file_returns_error_for_missing_path ... ok
[INFO] [stdout] test panel::tests::test_wide_content_truncation ... ok
[INFO] [stdout] test progress::core::tests::open_file_creates_task_with_file_length ... ok
[INFO] [stdout] test progress::core::tests::wrap_file_advances_task_on_read ... ok
[INFO] [stdout] test progress_bar::tests::test_bar_uses_correct_characters ... ok
[INFO] [stdout] test progress::core::tests::wrap_file_uses_seek_to_compute_total ... ok
[INFO] [stdout] test progress_bar::tests::test_builder_chaining ... ok
[INFO] [stdout] test progress::core::tests::open_file_advances_task_on_read ... ok
[INFO] [stdout] test panel::tests::test_title_and_subtitle_together ... ok
[INFO] [stdout] test panel::tests::test_zero_padding ... ok
[INFO] [stdout] test progress_bar::tests::test_clone ... ok
[INFO] [stdout] test progress_bar::tests::test_default_construction ... ok
[INFO] [stdout] test progress_bar::tests::test_default_trait ... ok
[INFO] [stdout] test progress_bar::tests::test_complete_style_when_not_finished ... ok
[INFO] [stdout] test progress_bar::tests::test_display_trait ... ok
[INFO] [stdout] test progress_bar::tests::test_display_with_total ... ok
[INFO] [stdout] test progress_bar::tests::test_debug ... ok
[INFO] [stdout] test progress_bar::tests::test_finished_style_applied ... ok
[INFO] [stdout] test progress_bar::tests::test_display_with_width ... ok
[INFO] [stdout] test progress_bar::tests::test_display_without_total ... ok
[INFO] [stdout] test progress_bar::tests::test_fixed_width ... ok
[INFO] [stdout] test progress_bar::tests::test_display_zero ... ok
[INFO] [stdout] test progress_bar::tests::test_half_bar_right_character ... ok
[INFO] [stdout] test progress_bar::tests::test_max_width_used_when_no_fixed_width ... ok
[INFO] [stdout] test progress_bar::tests::test_measure_max_width_varies ... ok
[INFO] [stdout] test progress_bar::tests::test_measure_without_fixed_width ... ok
[INFO] [stdout] test progress_bar::tests::test_measure_with_fixed_width ... ok
[INFO] [stdout] test progress_bar::tests::test_percentage_completed_custom_total ... ok
[INFO] [stdout] test progress_bar::tests::test_percentage_completed_negative ... ok
[INFO] [stdout] test progress_bar::tests::test_percentage_completed_none_total ... ok
[INFO] [stdout] test progress_bar::tests::test_percentage_completed_over_100 ... ok
[INFO] [stdout] test progress_bar::tests::test_percentage_completed_zero ... ok
[INFO] [stdout] test progress_bar::tests::test_pulse_color_blending_produces_gradient ... ok
[INFO] [stdout] test progress_bar::tests::test_pulse_rendering_enabled_by_flag ... ok
[INFO] [stdout] test progress_bar::tests::test_pulse_rendering_each_segment_is_bar_char ... ok
[INFO] [stdout] test progress_bar::tests::test_pulse_rendering_width ... ok
[INFO] [stdout] test progress_bar::tests::test_pulse_with_width_one ... ok
[INFO] [stdout] test progress_bar::tests::test_render_empty_bar ... ok
[INFO] [stdout] test progress_bar::tests::test_percentage_completed_normal ... ok
[INFO] [stdout] test progress_bar::tests::test_render_full_bar ... ok
[INFO] [stdout] test progress_bar::tests::test_pulse_scrolling_offset ... ok
[INFO] [stdout] test progress_bar::tests::test_render_over_100_percent ... ok
[INFO] [stdout] test progress_bar::tests::test_update_completed ... ok
[INFO] [stdout] test progress_bar::tests::test_render_half_bar ... ok
[INFO] [stdout] test progress_bar::tests::test_update_completed_and_total ... ok
[INFO] [stdout] test progress_bar::tests::test_renderable_trait ... ok
[INFO] [stdout] test progress_bar::tests::test_very_small_completed ... ok
[INFO] [stdout] test progress_bar::tests::test_update_preserves_total_when_none ... ok
[INFO] [stdout] test progress_bar::tests::test_with_animation_time ... ok
[INFO] [stdout] test progress_bar::tests::test_with_complete_style ... ok
[INFO] [stdout] test progress_bar::tests::test_width_one ... ok
[INFO] [stdout] test progress_bar::tests::test_fixed_width_capped_by_max_width ... ok
[INFO] [stdout] test progress_bar::tests::test_with_completed ... ok
[INFO] [stdout] test progress_bar::tests::test_width_consistency_odd_widths ... ok
[INFO] [stdout] test progress_bar::tests::test_with_finished_style ... ok
[INFO] [stdout] test progress_bar::tests::test_width_consistency ... ok
[INFO] [stdout] test progress_bar::tests::test_percentage_completed_full ... ok
[INFO] [stdout] test progress_bar::tests::test_half_bar_left_character ... ok
[INFO] [stdout] test progress_bar::tests::test_with_style ... ok
[INFO] [stdout] test progress_bar::tests::test_zero_total ... ok
[INFO] [stdout] test progress_bar::tests::test_with_pulse ... ok
[INFO] [stdout] test prompt::tests::test_ask_float_integer_input ... ok
[INFO] [stdout] test progress_bar::tests::test_with_total ... ok
[INFO] [stdout] test progress_bar::tests::test_with_pulse_style ... ok
[INFO] [stdout] test prompt::tests::test_ask_int_invalid_then_valid ... ok
[INFO] [stdout] test panel::tests::test_custom_width_clamped ... ok
[INFO] [stdout] test prompt::tests::test_ask_int_negative ... ok
[INFO] [stdout] test prompt::tests::test_builder_completions_default_none ... ok
[INFO] [stdout] test prompt::tests::test_builder_with_case_sensitive ... ok
[INFO] [stdout] test prompt::tests::test_builder_with_choices ... ok
[INFO] [stdout] test prompt::tests::test_builder_with_completions ... ok
[INFO] [stdout] test prompt::tests::test_builder_with_default ... ok
[INFO] [stdout] test prompt::tests::test_builder_with_password ... ok
[INFO] [stdout] test prompt::tests::test_builder_with_show_choices ... ok
[INFO] [stdout] test prompt::tests::test_builder_with_show_default ... ok
[INFO] [stdout] test prompt::tests::test_ask_float_invalid_then_valid ... ok
[INFO] [stdout] test prompt::tests::test_case_insensitive_choices ... ok
[INFO] [stdout] test prompt::tests::test_case_sensitive_choices_reject_wrong_case ... ok
[INFO] [stdout] test prompt::tests::test_choices_default_on_empty ... ok
[INFO] [stdout] test progress_bar::tests::test_with_total_none ... ok
[INFO] [stdout] test progress_bar::tests::test_with_width_none ... ok
[INFO] [stdout] test prompt::tests::test_confirm_invalid_then_valid ... ok
[INFO] [stdout] test prompt::tests::test_confirm_no ... ok
[INFO] [stdout] test progress_bar::tests::test_with_width ... ok
[INFO] [stdout] test prompt::tests::test_invalid_response_debug ... ok
[INFO] [stdout] test prompt::tests::test_invalid_response_display ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_all_with_max ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_ask_values_with_input ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_ask_with_input_invalid_then_valid ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_ask_with_input_valid ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_builder_with_defaults ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_builder_with_highlight_style ... ok
[INFO] [stdout] test prompt::tests::test_confirm_no_full ... ok
[INFO] [stdout] test prompt::tests::test_confirm_yes ... ok
[INFO] [stdout] test prompt::tests::test_confirm_yes_full ... ok
[INFO] [stdout] test prompt::tests::test_default_on_eof ... ok
[INFO] [stdout] test prompt::tests::test_confirm_case_insensitive ... ok
[INFO] [stdout] test prompt::tests::test_ask_float_valid ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_builder_with_min ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_deduplicate ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_default_on_empty ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_builder_with_max ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_builder_with_style ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_empty_choices ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_display_via_capture ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_format_input_prompt_no_defaults ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_invalid_number_in_list ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_min_max_combined ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_format_input_prompt_with_defaults ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_min_satisfied ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_empty_input_min_zero ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_format_choices ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_max_satisfied ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_max_validation ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_parse_all ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_out_of_range ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_parse_all_case_insensitive ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_parse_comma_separated ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_parse_single ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_trailing_comma ... ok
[INFO] [stdout] TRACE    msg
[INFO] [stdout] test prompt::tests::test_multiselect_min_validation ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_whitespace_input ... ok
[INFO] [stdout] test error::logging_handler::tests::test_emit_all_levels ... ok
[INFO] [stdout] test prompt::tests::test_password_prompt_text_unchanged ... ok
[INFO] [stdout] test prompt::tests::test_password_with_default_on_empty ... ok
[INFO] [stdout] test prompt::tests::test_multiselect_zero ... ok
[INFO] [stdout] test prompt::tests::test_no_default_empty_returns_empty ... ok
[INFO] [stdout] test prompt::tests::test_password_with_default_on_eof ... ok
[INFO] [stdout] test live::tests::test_auto_refresh_thread_starts_and_stops ... ok
[INFO] [stdout] test prompt::tests::test_password_ask_with_input_reads_normally ... ok
[INFO] [stdout] test prompt::tests::test_password_flag ... ok
[INFO] [stdout] test prompt::tests::test_prompt_suffix ... ok
[INFO] [stdout] test prompt::tests::test_prompt_text_hides_default_when_disabled ... ok
[INFO] [stdout] test prompt::tests::test_prompt_text_choices_and_default ... ok
[INFO] [stdout] test prompt::tests::test_prompt_text_hides_choices_when_disabled ... ok
[INFO] [stdout] test prompt::tests::test_prompt_with_choices_valid ... ok
[INFO] [stdout] test prompt::tests::test_prompt_text_includes_choices ... ok
[INFO] [stdout] test prompt::tests::test_prompt_has_styled_default_span ... ok
[INFO] [stdout] test prompt::tests::test_prompt_with_choices_invalid_then_valid ... ok
[INFO] [stdout] test prompt::tests::test_prompt_text_includes_default ... ok
[INFO] [stdout] test live::tests::test_with_refresh_per_second_negative - should panic ... ok
[INFO] [stdout] test prompt::tests::test_prompt_has_styled_choices_span ... ok
[INFO] [stdout] test live::tests::test_with_refresh_per_second_zero - should panic ... ok
[INFO] [stdout] test prompt::tests::test_select_builder_with_highlight_style ... ok
[INFO] [stdout] test prompt::tests::test_select_builder_with_style ... ok
[INFO] [stdout] test prompt::tests::test_select_default_on_empty ... ok
[INFO] [stdout] test prompt::tests::test_select_ask_with_input_invalid_then_valid ... ok
[INFO] [stdout] test prompt::tests::test_prompt_with_default_empty_returns_default ... ok
[INFO] [stdout] test prompt::tests::test_select_empty_choices ... ok
[INFO] [stdout] test prompt::tests::test_prompt_with_default_non_empty_returns_input ... ok
[INFO] [stdout] test prompt::tests::test_select_display_via_capture ... ok
[INFO] [stdout] test prompt::tests::test_select_default_on_eof ... ok
[INFO] [stdout] test prompt::tests::test_select_ask_value_with_input ... ok
[INFO] [stdout] test prompt::tests::test_select_format_input_prompt_no_default ... ok
[INFO] [stdout] test prompt::tests::test_select_parse_first_choice ... ok
[INFO] [stdout] test prompt::tests::test_select_parse_last_choice ... ok
[INFO] [stdout] test prompt::tests::test_select_no_default_on_empty ... ok
[INFO] [stdout] test prompt::tests::test_ask_int_valid ... ok
[INFO] [stdout] test prompt::tests::test_select_validate_in_range ... ok
[INFO] [stdout] test prompt::tests::test_select_format_choices ... ok
[INFO] [stdout] test prompt::tests::test_select_parse_single_number ... ok
[INFO] [stdout] test prompt::tests::test_select_format_input_prompt_with_default ... ok
[INFO] [stdout] test prompt::tests::test_select_negative_number ... ok
[INFO] [stdout] test prompt::tests::test_select_validate_out_of_range_high ... ok
[INFO] [stdout] test prompt::tests::test_select_validate_out_of_range_zero ... ok
[INFO] [stdout] test prompt::tests::test_select_whitespace_input ... ok
[INFO] [stdout] test region::tests::test_clone ... ok
[INFO] [stdout] test prompt::tests::test_simple_prompt_returns_input ... ok
[INFO] [stdout] test region::tests::test_debug ... ok
[INFO] [stdout] test prompt::tests::test_select_validate_not_a_number ... ok
[INFO] [stdout] test region::tests::test_negative_coordinates ... ok
[INFO] [stdout] test region::tests::test_zero_dimensions ... ok
[INFO] [stdout] test rule::tests::test_builder_chain ... ok
[INFO] [stdout] test prompt::tests::test_select_ask_with_input_valid ... ok
[INFO] [stdout] test rule::tests::test_ascii_fallback ... ok
[INFO] [stdout] test prompt::tests::test_select_builder_with_default ... ok
[INFO] [stdout] test region::tests::test_new ... ok
[INFO] [stdout] test rule::tests::test_centered_title_has_rule_chars_both_sides ... ok
[INFO] [stdout] test rule::tests::test_custom_style ... ok
[INFO] [stdout] test region::tests::test_equality ... ok
[INFO] [stdout] test rule::tests::test_default ... ok
[INFO] [stdout] test rule::tests::test_centered_title ... ok
[INFO] [stdout] test rule::tests::test_display_trait ... ok
[INFO] [stdout] test rule::tests::test_no_end ... ok
[INFO] [stdout] test rule::tests::test_left_title ... ok
[INFO] [stdout] test rule::tests::test_ends_with_newline ... ok
[INFO] [stdout] test rule::tests::test_no_title ... ok
[INFO] [stdout] test rule::tests::test_no_title_double_char ... ok
[INFO] [stdout] test rule::tests::test_no_title_custom_char ... ok
[INFO] [stdout] test rule::tests::test_rule_line_remainder ... ok
[INFO] [stdout] test rule::tests::test_rule_line_zero_width ... ok
[INFO] [stdout] test rule::tests::test_rule_line_multi_char ... ok
[INFO] [stdout] test rule::tests::test_right_title ... ok
[INFO] [stdout] test rule::tests::test_rule_line_exact ... ok
[INFO] [stdout] test rule::tests::test_display_with_title ... ok
[INFO] [stdout] test rule::tests::test_with_title ... ok
[INFO] [stdout] test segment::tests::test_adjust_line_length_pad ... ok
[INFO] [stdout] test segment::tests::test_align_bottom ... ok
[INFO] [stdout] test segment::tests::test_align_methods_preserve_content ... ok
[INFO] [stdout] test segment::tests::test_apply_style ... ok
[INFO] [stdout] test segment::tests::test_align_top ... ok
[INFO] [stdout] test segment::tests::test_align_middle ... ok
[INFO] [stdout] test segment::tests::test_apply_style_post_style ... ok
[INFO] [stdout] test segment::tests::test_apply_style_with_control_segments ... ok
[INFO] [stdout] test segment::tests::test_cell_length_with_mixed_content ... ok
[INFO] [stdout] test segment::tests::test_adjust_line_length_crop ... ok
[INFO] [stdout] test segment::tests::test_adjust_line_length_exact ... ok
[INFO] [stdout] test segment::tests::test_apply_style_none_params ... ok
[INFO] [stdout] test rule::tests::test_title_truncation ... ok
[INFO] [stdout] test segment::tests::test_adjust_line_length_no_pad ... ok
[INFO] [stdout] test live::tests::test_auto_refresh_restart ... ok
[INFO] [stdout] test segment::tests::test_control_types_coverage ... ok
[INFO] [stdout] test segment::tests::test_divide ... ok
[INFO] [stdout] test segment::tests::test_divide_empty_segments ... ok
[INFO] [stdout] test segment::tests::test_divide_with_control_segments ... ok
[INFO] [stdout] test segment::tests::test_divide_exact_boundaries ... ok
[INFO] [stdout] test segment::tests::test_get_line_length ... ok
[INFO] [stdout] test segment::tests::test_get_shape_empty ... ok
[INFO] [stdout] test segment::tests::test_get_shape ... ok
[INFO] [stdout] test segment::tests::test_is_control ... ok
[INFO] [stdout] test segment::tests::test_line ... ok
[INFO] [stdout] test segment::tests::test_is_empty ... ok
[INFO] [stdout] test segment::tests::test_remove_color ... ok
[INFO] [stdout] test segment::tests::test_set_shape ... ok
[INFO] [stdout] test segment::tests::test_set_shape_with_height ... ok
[INFO] [stdout] test segment::tests::test_simplify ... ok
[INFO] [stdout] test segment::tests::test_set_shape_truncate ... ok
[INFO] [stdout] test segment::tests::test_simplify_different_styles ... ok
[INFO] [stdout] test segment::tests::test_filter_control ... ok
[INFO] [stdout] test segment::tests::test_cell_length ... ok
[INFO] [stdout] test segment::tests::test_split_cells_beyond_length ... ok
[INFO] [stdout] test segment::tests::test_split_cells_cjk ... ok
[INFO] [stdout] test segment::tests::test_split_cells_mixed ... ok
[INFO] [stdout] test segment::tests::test_split_cells_zero_cut ... ok
[INFO] [stdout] test segment::tests::test_simplify_empty_segments ... ok
[INFO] [stdout] test segment::tests::test_simplify_with_control ... ok
[INFO] [stdout] test segment::tests::test_split_and_crop_lines_crop ... ok
[INFO] [stdout] test segment::tests::test_split_and_crop_lines_no_pad ... ok
[INFO] [stdout] test segment::tests::test_split_lines_terminator_basic ... ok
[INFO] [stdout] test segment::tests::test_split_and_crop_lines_with_newline_segments ... ok
[INFO] [stdout] test segment::tests::test_split_lines_terminator_no_newline ... ok
[INFO] [stdout] test segment::tests::test_split_cells_ascii ... ok
[INFO] [stdout] test segment::tests::test_split_lines_with_styled_segments ... ok
[INFO] [stdout] test segment::tests::test_split_lines_trailing_newline ... ok
[INFO] [stdout] test segment::tests::test_strip_links ... ok
[INFO] [stdout] test segment::tests::test_split_lines ... ok
[INFO] [stdout] test sparkline::tests::test_ascending_values ... ok
[INFO] [stdout] test sparkline::tests::test_all_same_values ... ok
[INFO] [stdout] test segment::tests::test_split_and_crop_lines_basic ... ok
[INFO] [stdout] test segment::tests::test_split_cells_emoji ... ok
[INFO] [stdout] test sparkline::tests::test_builder_chaining ... ok
[INFO] [stdout] test segment::tests::test_strip_styles ... ok
[INFO] [stdout] test segment::tests::test_split_lines_multiple_newlines ... ok
[INFO] [stdout] test sparkline::tests::test_custom_min_max ... ok
[INFO] [stdout] test sparkline::tests::test_custom_min_clamping ... ok
[INFO] [stdout] test sparkline::tests::test_empty_data ... ok
[INFO] [stdout] test segment::tests::test_split_lines_terminator_trailing_newline ... ok
[INFO] [stdout] test sparkline::tests::test_descending_values ... ok
[INFO] [stdout] test sparkline::tests::test_resample_single_to_many ... ok
[INFO] [stdout] test sparkline::tests::test_display_trait ... ok
[INFO] [stdout] test sparkline::tests::test_renderable_segments ... ok
[INFO] [stdout] test sparkline::tests::test_large_data ... ok
[INFO] [stdout] test sparkline::tests::test_measure ... ok
[INFO] [stdout] test sparkline::tests::test_measure_with_width ... ok
[INFO] [stdout] test sparkline::tests::test_negative_values ... ok
[INFO] [stdout] test sparkline::tests::test_float_precision ... ok
[INFO] [stdout] test sparkline::tests::test_renderable_empty ... ok
[INFO] [stdout] test sparkline::tests::test_single_value ... ok
[INFO] [stdout] test sparkline::tests::test_style_application ... ok
[INFO] [stdout] test sparkline::tests::test_width_resampling_expand ... ok
[INFO] [stdout] test status::spinner::tests::test_construction_invalid_name ... ok
[INFO] [stdout] test sparkline::tests::test_width_resampling_shrink ... ok
[INFO] [stdout] test sparkline::tests::test_width_zero ... ok
[INFO] [stdout] test status::spinner::tests::test_construction_valid_name ... ok
[INFO] [stdout] test status::spinner::tests::test_measure_returns_reasonable_values ... ok
[INFO] [stdout] test status::spinner::tests::test_line_spinner ... ok
[INFO] [stdout] test status::spinner::tests::test_render_treats_time_as_elapsed_when_start_unset ... ok
[INFO] [stdout] test status::spinner::tests::test_render_with_style ... ok
[INFO] [stdout] test status::spinner::tests::test_measure_with_text ... ok
[INFO] [stdout] test status::spinner::tests::test_render_wraps_around ... ok
[INFO] [stdout] test status::spinner::tests::test_render_with_text ... ok
[INFO] [stdout] test status::spinner::tests::test_render_at_different_times_returns_different_frames ... ok
[INFO] [stdout] test status::spinner::tests::test_render_at_time_zero_returns_first_frame ... ok
[INFO] [stdout] test status::spinner::tests::test_spinner_error_display ... ok
[INFO] [stdout] test status::spinner::tests::test_update_does_not_set_empty_text ... ok
[INFO] [stdout] test status::spinner::tests::test_renderable_with_text ... ok
[INFO] [stdout] test status::spinner::tests::test_with_speed ... ok
[INFO] [stdout] test status::spinner::tests::test_with_text ... ok
[INFO] [stdout] test status::spinner::tests::test_with_style ... ok
[INFO] [stdout] test status::spinner::tests::test_renderable_trait ... ok
[INFO] [stdout] test status::spinner::tests::test_update_speed ... ok
[INFO] [stdout] test status::spinners::tests::test_all_spinner_names ... ok
[INFO] [stdout] test status::spinners::tests::test_bouncing_ball_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_all_spinners_have_non_empty_frames_and_positive_interval ... ok
[INFO] [stdout] test status::spinner::tests::test_update_style ... ok
[INFO] [stdout] test status::spinner::tests::test_speed_affects_frame_selection ... ok
[INFO] [stdout] test status::spinner::tests::test_update_text ... ok
[INFO] [stdout] test status::spinner::tests::test_various_spinners ... ok
[INFO] [stdout] test status::spinners::tests::test_bouncing_bar_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_dots12_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_dots2_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_dots8bit_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_grenade_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_known_spinners_exist ... ok
[INFO] [stdout] test status::spinners::tests::test_line_frames ... ok
[INFO] [stdout] test status::spinners::tests::test_pong_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_shark_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_total_spinner_count ... ok
[INFO] [stdout] test status::spinners::tests::test_material_frame_count ... ok
[INFO] [stdout] test status::spinners::tests::test_spinners_non_empty ... ok
[INFO] [stdout] test status::tests::test_builder_chaining ... ok
[INFO] [stdout] [?25ltest status::tests::test_default_construction ... ok
[INFO] [stdout] test status::tests::test_drop_when_not_started ... ok
[INFO] [stdout] [?25l[?25ltest status::tests::test_console_from_builder ... ok
[INFO] [stdout] test status::tests::test_console_accessor ... ok
[INFO] [stdout] test status::spinners::tests::test_weather_frame_count ... ok
[INFO] [stdout] test status::tests::test_default_spinner_has_text ... [?25lok
[INFO] [stdout] test status::tests::test_status_error_display ... ok
[INFO] [stdout] test status::tests::test_default_spinner_is_dots ... ok
[INFO] [stdout] test status::spinners::tests::test_dots_frame_count ... ok
[INFO] [stdout] test status::tests::test_status_error_source ... ok
[INFO] [stdout] test status::tests::test_renderable_returns_spinner ... ok
[INFO] [stdout] test status::tests::test_try_new_invalid_spinner ... ok
[INFO] [stdout] test status::tests::test_stop_idempotent ... ok
[INFO] [stdout] [?25l
[2K- test
[2K- running
[2K- keep me
[2K- new statustest status::tests::test_try_new_valid_spinner ... ok
[INFO] [stdout] test status::tests::test_update_status_text ... ok
[INFO] [stdout] test status::tests::test_update_spinner_name ... ok
[INFO] [stdout] test status::tests::test_update_speed ... ok
[INFO] [stdout] test status::tests::test_update_multiple_fields ... ok
[INFO] [stdout] test status::tests::test_update_spinner_invalid_name ... ok
[INFO] [stdout] test status::tests::test_update_spinner_name_preserves_text ... ok
[INFO] [stdout] test status::tests::test_update_all_with_new_spinner ... ok
[INFO] [stdout] test status::tests::test_update_status_text_preserves_spinner ... ok
[INFO] [stdout] test status::tests::test_update_style_applied_to_spinner_update ... ok
[INFO] [stdout] [?25l
[1A[2K[?25htest status::tests::test_update_style ... ok
[INFO] [stdout] test status::tests::test_update_spinner_while_started ... ok
[INFO] [stdout] test status::tests::test_with_console ... ok
[INFO] [stdout] test status::tests::test_with_speed ... ok
[INFO] [stdout] test status::tests::test_with_spinner_invalid ... ok
[INFO] [stdout] test status::toast::tests::test_builder_duration ... ok
[INFO] [stdout] test status::toast::tests::test_builder_chain ... ok
[INFO] [stdout] test status::toast::tests::test_builder_icon ... ok
[INFO] [stdout] test status::toast::tests::test_builder_show_progress ... ok
[INFO] [stdout] test status::tests::test_with_spinner_style ... ok
[INFO] [stdout] test status::toast::tests::test_build_content ... ok
[INFO] [stdout] test status::toast::tests::test_build_content_custom_icon ... ok
[INFO] [stdout] test status::toast::tests::test_builder_type ... ok
[INFO] [stdout] test status::toast::tests::test_builder_width ... ok
[INFO] [stdout] test status::toast::tests::test_custom_style ... ok
[INFO] [stdout] test status::toast::tests::test_default_construction ... ok
[INFO] [stdout] test status::toast::tests::test_convenience_constructors ... ok
[INFO] [stdout] test status::toast::tests::test_long_message ... ok
[INFO] [stdout] test status::toast::tests::test_manager_clear ... ok
[INFO] [stdout] test status::toast::tests::test_manager_max_visible ... ok
[INFO] [stdout] test status::toast::tests::test_manager_default ... ok
[INFO] [stdout] test status::tests::test_with_refresh_per_second ... ok
[INFO] [stdout] test status::tests::test_with_spinner ... ok
[INFO] [stdout] test status::tests::test_with_spinner_preserves_text ... ok
[INFO] [stdout] test status::toast::tests::test_manager_max_visible_limit ... ok
[INFO] [stdout] test status::toast::tests::test_manager_push ... ok
[INFO] [stdout] test status::toast::tests::test_empty_message ... ok
[INFO] [stdout] test status::toast::tests::test_manager_push_multiple ... ok
[INFO] [stdout] test status::toast::tests::test_toast_type_border_styles ... ok
[INFO] [stdout] test status::toast::tests::test_toast_type_default_icons ... ok
[INFO] [stdout] test status::toast::tests::test_show ... ok
[INFO] [stdout] test status::toast::tests::test_zero_duration ... ok
[INFO] [stdout] test status::toast::tests::test_manager_show_all ... ok
[INFO] [stdout] test status::toast::tests::test_multiline_message ... ok
[INFO] [stdout] test style::tests::test_add_link_override ... ok
[INFO] [stdout] test style::tests::test_add_link_preserved ... ok
[INFO] [stdout] test style::tests::test_add_with_none ... ok
[INFO] [stdout] test style::tests::test_background_style ... ok
[INFO] [stdout] test status::toast::tests::test_renderable ... ok
[INFO] [stdout] test status::toast::tests::test_progress_bar_construction ... ok
[INFO] [stdout] test style::tests::test_clear_meta_and_links ... ok
[INFO] [stdout] test style::tests::test_combine_link ... ok
[INFO] [stdout] test style::tests::test_combine_empty ... ok
[INFO] [stdout] test style::tests::test_copy ... ok
[INFO] [stdout] test style::tests::test_display_bold ... ok
[INFO] [stdout] test style::tests::test_background_style_clears_underline ... ok
[INFO] [stdout] test style::tests::test_display_all_attributes ... ok
[INFO] [stdout] test style::tests::test_add_override_color ... ok
[INFO] [stdout] test style::tests::test_display_bold_red_on_black ... ok
[INFO] [stdout] test style::tests::test_add_styles ... ok
[INFO] [stdout] test style::tests::test_display_link ... ok
[INFO] [stdout] test style::tests::test_combine_multiple ... ok
[INFO] [stdout] test live::tests::test_refresh_thread_calls_refresh ... ok
[INFO] [stdout] test style::tests::test_display_not_bold ... ok
[INFO] [stdout] test style::tests::test_display_not_bold_with_color ... ok
[INFO] [stdout] test style::tests::test_equality_different_color ... ok
[INFO] [stdout] test style::tests::test_display_null ... ok
[INFO] [stdout] test style::tests::test_from_color ... ok
[INFO] [stdout] test style::tests::test_equality_same ... ok
[INFO] [stdout] test style::tests::test_get_html_style_complex ... ok
[INFO] [stdout] test style::tests::test_get_html_style_simple ... ok
[INFO] [stdout] test style::tests::test_is_null_false_with_color ... ok
[INFO] [stdout] test style::tests::test_hash ... ok
[INFO] [stdout] test style::tests::test_is_null_true ... ok
[INFO] [stdout] test style::tests::test_parse_attribute_alias_i ... ok
[INFO] [stdout] test style::tests::test_parse_attribute_alias_o ... ok
[INFO] [stdout] test style::tests::test_is_null_false_with_bold ... ok
[INFO] [stdout] test style::tests::test_parse_attribute_alias_b ... ok
[INFO] [stdout] test style::tests::test_link_id_is_monotonic ... ok
[INFO] [stdout] test style::tests::test_from_color_none ... ok
[INFO] [stdout] test style::tests::test_parse_attribute_alias_u ... ok
[INFO] [stdout] test style::tests::test_parse_attribute_alias_s ... ok
[INFO] [stdout] test style::tests::test_parse_attribute_alias_uu ... ok
[INFO] [stdout] test style::tests::test_parse_bold_link ... ok
[INFO] [stdout] test style::tests::test_parse_bold_link_equals_syntax ... ok
[INFO] [stdout] test style::tests::test_parse_empty ... ok
[INFO] [stdout] test style::tests::test_parse_error_link_alone ... ok
[INFO] [stdout] test style::tests::test_parse_error_on_invalid_color ... ok
[INFO] [stdout] test style::tests::test_parse_link_equals_empty_error ... ok
[INFO] [stdout] test style::tests::test_parse_not_bold ... ok
[INFO] [stdout] test style::tests::test_parse_error_not_unknown_attribute ... ok
[INFO] [stdout] test style::tests::test_parse_link_equals_syntax ... ok
[INFO] [stdout] test style::tests::test_parse_red ... ok
[INFO] [stdout] test style::tests::test_pick_first_all_null_returns_null ... ok
[INFO] [stdout] test style::tests::test_pick_first_returns_first_non_null ... ok
[INFO] [stdout] test style::tests::test_parse_bold_red_on_black ... ok
[INFO] [stdout] test style::tests::test_parse_error_rgb_out_of_range ... ok
[INFO] [stdout] test style::tests::test_parse_error_on_alone ... ok
[INFO] [stdout] test style::tests::test_render_all_attributes ... ok
[INFO] [stdout] test style::tests::test_render_link_no_color_system ... ok
[INFO] [stdout] test style::tests::test_render_no_color_system ... ok
[INFO] [stdout] test style::tests::test_render_link_only ... ok
[INFO] [stdout] test style::tests::test_render_bold_red_on_black ... ok
[INFO] [stdout] test style::tests::test_render_empty_text ... ok
[INFO] [stdout] test style::tests::test_render_null_style ... ok
[INFO] [stdout] test style::tests::test_style_stack_pop ... ok
[INFO] [stdout] test style::tests::test_style_stack_pop_error ... ok
[INFO] [stdout] test style::tests::test_style_stack_new ... ok
[INFO] [stdout] test style::tests::test_underline_color_add ... ok
[INFO] [stdout] test style::tests::test_underline_color_render_truecolor ... ok
[INFO] [stdout] test style::tests::test_underline_color_display ... ok
[INFO] [stdout] test style::tests::test_underline_color_is_not_null ... ok
[INFO] [stdout] test style::tests::test_underline_color_setter_getter ... ok
[INFO] [stdout] test style::tests::test_pick_first_skips_none_and_null ... ok
[INFO] [stdout] test style::tests::test_render_bold_with_link ... ok
[INFO] [stdout] test style::tests::test_public_setters ... ok
[INFO] [stdout] test style::tests::test_underline_equality ... ok
[INFO] [stdout] test style::tests::test_underline_style_is_not_null ... ok
[INFO] [stdout] test style::tests::test_underline_style_render_curly ... ok
[INFO] [stdout] test style::tests::test_with_link ... ok
[INFO] [stdout] test style::tests::test_with_link_is_not_null ... ok
[INFO] [stdout] test style::tests::test_without_color ... ok
[INFO] [stdout] test style::tests::test_underline_style_render_dashed ... ok
[INFO] [stdout] test style::tests::test_underline_style_setter_getter ... ok
[INFO] [stdout] test syntax::tests::test_code_width_constraint ... ok
[INFO] [stdout] test syntax::tests::test_builder_pattern ... ok
[INFO] [stdout] test style::tests::test_without_color_preserves_underline_color ... ok
[INFO] [stdout] test syntax::tests::test_dedent_false_preserves_whitespace ... ok
[INFO] [stdout] test syntax::tests::test_dedent_preserves_relative_indent ... ok
[INFO] [stdout] test syntax::tests::test_default_values ... ok
[INFO] [stdout] test style::tests::test_underline_style_add ... ok
[INFO] [stdout] test style::tests::test_underline_style_display ... ok
[INFO] [stdout] test syntax::tests::test_from_path_nonexistent ... ok
[INFO] [stdout] test style::tests::test_style_stack_push ... ok
[INFO] [stdout] test syntax::tests::test_dedent_strips_common_whitespace ... ok
[INFO] [stdout] test syntax::tests::test_get_background_style_override ... ok
[INFO] [stdout] test status::toast::tests::test_manager_toasts_accessor ... ok
[INFO] [stdout] test syntax::tests::test_guess_lexer_no_extension ... ok
[INFO] [stdout] test syntax::tests::test_get_background_style_default ... ok
[INFO] [stdout] [?25htest status::tests::test_drop_calls_stop ... ok
[INFO] [stdout] [?25h[?25h[?25h[?25htest status::tests::test_start_idempotent ... ok
[INFO] [stdout] test status::tests::test_stop_after_start ... ok
[INFO] [stdout] test status::tests::test_start_stop ... ok
[INFO] [stdout] test status::tests::test_update_while_started ... ok
[INFO] [stdout] test syntax::tests::test_guess_lexer_rust ... ok
[INFO] [stdout] test syntax::tests::test_guess_lexer_json ... ok
[INFO] [stdout] test syntax::tests::test_measure_no_line_numbers ... ok
[INFO] [stdout] test syntax::tests::test_measure_with_code_width ... ok
[INFO] [stdout] test syntax::tests::test_highlight_lines ... ok
[INFO] [stdout] test syntax::tests::test_line_numbers_disabled ... ok
[INFO] [stdout] test syntax::tests::test_empty_code ... ok
[INFO] [stdout] test syntax::tests::test_line_numbers_enabled ... ok
[INFO] [stdout] test syntax::tests::test_line_range_out_of_bounds ... ok
[INFO] [stdout] test syntax::tests::test_line_range ... ok
[INFO] [stdout] test syntax::tests::test_guess_lexer_python ... ok
[INFO] [stdout] test syntax::tests::test_measure_with_line_numbers ... ok
[INFO] [stdout] test syntax::tests::test_numbers_column_width_disabled ... ok
[INFO] [stdout] test syntax::tests::test_numbers_column_width_double_digit ... ok
[INFO] [stdout] test syntax::tests::test_numbers_column_width_single_digit ... ok
[INFO] [stdout] test syntax::tests::test_process_code_adds_trailing_newline ... ok
[INFO] [stdout] test syntax::tests::test_process_code_preserves_trailing_newline ... ok
[INFO] [stdout] test syntax::tests::test_single_line_code ... ok
[INFO] [stdout] test syntax::tests::test_padding_top_bottom ... ok
[INFO] [stdout] test syntax::tests::test_start_line_offset ... ok
[INFO] [stdout] test syntax::tests::test_stylize_range_applied ... ok
[INFO] [stdout] test syntax::tests::test_from_path_reads_self ... ok
[INFO] [stdout] test syntax::tests::test_syntect_to_gilt_style_conversion ... ok
[INFO] [stdout] test syntax::tests::test_stylize_range_stores ... ok
[INFO] [stdout] test syntax::tests::test_tab_expansion ... ok
[INFO] [stdout] test syntax::tests::test_tab_expansion_custom_size ... ok
[INFO] [stdout] test syntax::tests::test_unknown_theme_fallback ... ok
[INFO] [stdout] test syntax::tests::test_unknown_language_fallback ... ok
[INFO] [stdout] test text::core::tests::get_style_at_offset_themed_resolves_named_style ... ok
[INFO] [stdout] test text::core::tests::markup_escapes_literal_brackets ... ok
[INFO] [stdout] test text::core::tests::markup_roundtrip_no_spans ... ok
[INFO] [stdout] test text::core::tests::markup_roundtrip_overlapping_spans ... ok
[INFO] [stdout] test text::core::tests::markup_roundtrip_simple_text ... ok
[INFO] [stdout] test syntax::tests::test_word_wrap ... ok
[INFO] [stdout] test text::core::tests::markup_roundtrip_empty_text ... ok
[INFO] [stdout] test tree::tests::test_add_inherits_styles ... ok
[INFO] [stdout] test tree::tests::test_add_returns_mut_ref ... ok
[INFO] [stdout] test tree::tests::test_ascii_mode ... ok
[INFO] [stdout] test tree::tests::test_bold_guide_style ... ok
[INFO] [stdout] test tree::tests::test_builder_pattern ... ok
[INFO] [stdout] test tree::tests::test_collapsed_node ... ok
[INFO] [stdout] test tree::tests::test_continuation_guides ... ok
[INFO] [stdout] test tree::tests::test_display_trait ... ok
[INFO] [stdout] test tree::tests::test_double_guide_style ... ok
[INFO] [stdout] test tree::tests::test_empty_tree_no_guides ... ok
[INFO] [stdout] test tree::tests::test_guide_characters ... ok
[INFO] [stdout] test tree::tests::test_guide_width ... ok
[INFO] [stdout] test tree::tests::test_hide_root ... ok
[INFO] [stdout] test tree::tests::test_hide_root_no_children ... ok
[INFO] [stdout] test tree::tests::test_hide_root_deep ... ok
[INFO] [stdout] test tree::tests::test_measure_collapsed ... ok
[INFO] [stdout] test tree::tests::test_measure ... ok
[INFO] [stdout] test tree::tests::test_measure_deep ... ok
[INFO] [stdout] test tree::tests::test_measure_hide_root ... ok
[INFO] [stdout] test tree::tests::test_deep_nesting ... ok
[INFO] [stdout] test tree::tests::test_multiline_label ... ok
[INFO] [stdout] test tree::tests::test_multiple_children ... ok
[INFO] [stdout] test tree::tests::test_segments_contain_newlines ... ok
[INFO] [stdout] test tree::tests::test_one_child ... ok
[INFO] [stdout] test tree::tests::test_single_node ... ok
[INFO] [stdout] test tree::tests::test_nested_children ... ok
[INFO] [stdout] test tree::tests::test_tree_cjk_labels ... ok
[INFO] [stdout] test tree::tests::test_tree_width_one ... ok
[INFO] [stdout] test tree::tests::test_tree_emoji_labels ... ok
[INFO] [stdout] test utils::align_widget::tests::test_center_align ... ok
[INFO] [stdout] test utils::align_widget::tests::test_center_constructor ... ok
[INFO] [stdout] test utils::align_widget::tests::test_center_odd_excess ... ok
[INFO] [stdout] test utils::align_widget::tests::test_content_fills_width_no_alignment_needed ... ok
[INFO] [stdout] test utils::align_widget::tests::test_custom_width ... ok
[INFO] [stdout] test tree::tests::test_tree_deep_nesting ... ok
[INFO] [stdout] test utils::align_widget::tests::test_left_constructor ... ok
[INFO] [stdout] test utils::align_widget::tests::test_left_align ... ok
[INFO] [stdout] test utils::align_widget::tests::test_measure ... ok
[INFO] [stdout] test utils::align_widget::tests::test_no_pad_left ... ok
[INFO] [stdout] test utils::align_widget::tests::test_right_align ... ok
[INFO] [stdout] test utils::align_widget::tests::test_vertical_align_equality ... ok
[INFO] [stdout] test utils::align_widget::tests::test_vertical_bottom ... ok
[INFO] [stdout] test utils::align_widget::tests::test_vertical_middle ... ok
[INFO] [stdout] test utils::align_widget::tests::test_vertical_top ... ok
[INFO] [stdout] test utils::align_widget::tests::test_with_style ... ok
[INFO] [stdout] test utils::align_widget::tests::test_horizontal_align_equality ... ok
[INFO] [stdout] test utils::ansi::tests::decode_preserves_internal_newlines ... ok
[INFO] [stdout] test utils::ansi::tests::decode_preserves_trailing_newline ... ok
[INFO] [stdout] test utils::ansi::tests::decode_styled_span_survives_with_trailing_newline ... ok
[INFO] [stdout] test utils::ansi::tests::decode_with_trailing_newline_then_more ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_default_trait ... ok
[INFO] [stdout] test utils::align_widget::tests::test_right_constructor ... ok
[INFO] [stdout] test utils::ansi::tests::from_ansi_preserves_trailing_newline ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_empty_sgr_treated_as_reset ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_256_color ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_background_256_color ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_background_truecolor ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_background_color_standard ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_bright_foreground ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_bright_background ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_carriage_return ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_colored_text ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_default_foreground ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_fg_and_bg_combined ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_multiple_carriage_returns ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_multiple_resets ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_carriage_return_at_start ... ok
[INFO] [stdout] test syntax::tests::test_padding_unpack_from_shorthand ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_no_ansi ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_osc8_hyperlink ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_multiple_sgr_codes_in_one_sequence ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_plain_text ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_reset_clears_style ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_truecolor_rgb ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_multiline ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_multiline_empty ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_nested_styles_accumulate ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_style_persists_across_lines ... ok
[INFO] [stdout] test utils::ansi::tests::test_sgr_style_map_basic_attributes ... ok
[INFO] [stdout] test utils::ansi::tests::test_sgr_style_map_background_colors ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_line_bold_text ... ok
[INFO] [stdout] test utils::ansi::tests::test_sgr_style_map_foreground_colors ... ok
[INFO] [stdout] test utils::ansi::tests::test_sgr_style_map_reset_attributes ... ok
[INFO] [stdout] test utils::ansi::tests::test_sgr_style_map_unknown ... ok
[INFO] [stdout] test utils::ansi::tests::test_tokenize_empty_string ... ok
[INFO] [stdout] test utils::ansi::tests::test_tokenize_mixed_content ... ok
[INFO] [stdout] test utils::ansi::tests::test_tokenize_multiple_sgr_codes ... ok
[INFO] [stdout] test utils::ansi::tests::test_tokenize_osc_sequence ... ok
[INFO] [stdout] test utils::ansi::tests::test_tokenize_plain_text ... ok
[INFO] [stdout] test utils::ansi::tests::test_tokenize_sgr_sequence ... ok
[INFO] [stdout] test utils::bar::tests::test_bar_default_width_uses_max_width ... ok
[INFO] [stdout] test utils::bar::tests::test_bar_near_end ... ok
[INFO] [stdout] test utils::bar::tests::test_bar_offset_position ... ok
[INFO] [stdout] test utils::bar::tests::test_bar_width_capped_by_max_width ... ok
[INFO] [stdout] test utils::bar::tests::test_bar_with_specific_width ... ok
[INFO] [stdout] test utils::bar::tests::test_begin_equals_end_at_zero ... ok
[INFO] [stdout] test utils::bar::tests::test_clone ... ok
[INFO] [stdout] test utils::bar::tests::test_debug ... ok
[INFO] [stdout] test utils::bar::tests::test_display ... ok
[INFO] [stdout] test utils::bar::tests::test_empty_bar_begin_equals_end ... ok
[INFO] [stdout] test utils::bar::tests::test_empty_bar_begin_greater_than_end ... ok
[INFO] [stdout] test utils::ansi::tests::test_sgr_style_map_bright_colors ... ok
[INFO] [stdout] test utils::bar::tests::test_full_bar ... ok
[INFO] [stdout] test utils::ansi::tests::test_sgr_style_map_decorations ... ok
[INFO] [stdout] test utils::bar::tests::test_half_bar ... ok
[INFO] [stdout] test utils::bar::tests::test_measure_with_fixed_width ... ok
[INFO] [stdout] test utils::bar::tests::test_new_clamps_begin ... ok
[INFO] [stdout] test utils::bar::tests::test_new_clamps_end ... ok
[INFO] [stdout] test utils::bar::tests::test_new_defaults ... ok
[INFO] [stdout] test utils::bar::tests::test_renderable_trait ... ok
[INFO] [stdout] test utils::bar::tests::test_segments_end_with_newline ... ok
[INFO] [stdout] test utils::bar::tests::test_measure_without_fixed_width ... ok
[INFO] [stdout] test utils::bar::tests::test_segments_have_style ... ok
[INFO] [stdout] test utils::bar::tests::test_size_zero ... ok
[INFO] [stdout] test utils::bar::tests::test_very_small_bar ... ok
[INFO] [stdout] test utils::bar::tests::test_with_bgcolor ... ok
[INFO] [stdout] test utils::bar::tests::test_with_color ... ok
[INFO] [stdout] test utils::bar::tests::test_with_color_and_bgcolor_chained ... ok
[INFO] [stdout] test utils::bar::tests::test_with_style ... ok
[INFO] [stdout] test utils::bar::tests::test_with_width ... ok
[INFO] [stdout] test utils::ansi::tests::test_decode_unknown_codes_ignored ... ok
[INFO] [stdout] test utils::bar::tests::test_width_consistency ... ok
[INFO] [stdout] test utils::bar::tests::test_width_consistency_with_offset ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_bottom_empty_widths ... ok
[INFO] [stdout] test utils::box_chars::tests::test_ascii_flag ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_bottom_heavy ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_bottom_single_column ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_bottom_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_row_ascii ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_row_body_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_row_empty_widths ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_row_head_heavy ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_row_head_no_edge ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_row_head_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_top_ascii ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_top_ascii2 ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_top_empty_widths ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_top_single_column ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_top_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_top_three_columns ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_row_foot_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_bad_char_count - should panic ... ok
[INFO] [stdout] test utils::box_chars::tests::test_bad_line_count - should panic ... ok
[INFO] [stdout] test utils::box_chars::tests::test_get_top_zero_width_column ... ok
[INFO] [stdout] test utils::box_chars::tests::test_markdown_box ... ok
[INFO] [stdout] test utils::box_chars::tests::test_parse_double ... ok
[INFO] [stdout] test utils::box_chars::tests::test_parse_heavy ... ok
[INFO] [stdout] test utils::box_chars::tests::test_parse_all_19_boxes ... ok
[INFO] [stdout] test utils::box_chars::tests::test_parse_ascii ... ok
[INFO] [stdout] test utils::box_chars::tests::test_parse_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_parse_rounded ... ok
[INFO] [stdout] test utils::box_chars::tests::test_plain_headed_heavy_head ... ok
[INFO] [stdout] test utils::box_chars::tests::test_plain_headed_identity ... ok
[INFO] [stdout] test utils::box_chars::tests::test_plain_headed_minimal_double_head ... ok
[INFO] [stdout] test utils::box_chars::tests::test_plain_headed_square_double_head ... ok
[INFO] [stdout] test utils::box_chars::tests::test_substitute_heavy_to_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_substitute_heavy_edge_to_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_substitute_minimal_heavy_head_to_minimal ... ok
[INFO] [stdout] test utils::box_chars::tests::test_substitute_rounded_to_square ... ok
[INFO] [stdout] test utils::box_chars::tests::test_substitute_not_ascii ... ok
[INFO] [stdout] test utils::box_chars::tests::test_substitute_simple_heavy_to_simple ... ok
[INFO] [stdout] test utils::cells::tests::test_chop_cells_double_width ... ok
[INFO] [stdout] test utils::cells::tests::test_chop_cells_empty ... ok
[INFO] [stdout] test utils::cells::tests::test_cell_len ... ok
[INFO] [stdout] test utils::cells::tests::test_chop_cells_mixed_width ... ok
[INFO] [stdout] test utils::cells::tests::test_get_character_cell_size ... ok
[INFO] [stdout] test utils::cells::tests::test_is_single_cell_widths ... ok
[INFO] [stdout] test utils::cells::tests::test_chop_cells_single_width ... ok
[INFO] [stdout] test utils::cells::tests::test_edge_cases ... ok
[INFO] [stdout] test utils::cells::tests::test_long_strings ... ok
[INFO] [stdout] test utils::cells::tests::test_set_cell_size_crop_double_width ... ok
[INFO] [stdout] test utils::cells::tests::test_set_cell_size_cropping ... ok
[INFO] [stdout] test utils::cells::tests::test_set_cell_size_exact_match ... ok
[INFO] [stdout] test utils::cells::tests::test_set_cell_size_mixed_width ... ok
[INFO] [stdout] test utils::cells::tests::test_set_cell_size_padding ... ok
[INFO] [stdout] test utils::constrain::tests::test_builder_method ... ok
[INFO] [stdout] test utils::constrain::tests::test_clone ... ok
[INFO] [stdout] test utils::constrain::tests::test_default_construction ... ok
[INFO] [stdout] test utils::constrain::tests::test_debug ... ok
[INFO] [stdout] test utils::constrain::tests::test_measure_width_larger_than_content ... ok
[INFO] [stdout] test utils::constrain::tests::test_measure_width_smaller_than_console ... ok
[INFO] [stdout] test utils::constrain::tests::test_measure_with_width ... ok
[INFO] [stdout] test utils::constrain::tests::test_measure_without_width ... ok
[INFO] [stdout] test utils::constrain::tests::test_none_width_construction ... ok
[INFO] [stdout] test utils::constrain::tests::test_none_width_passthrough ... ok
[INFO] [stdout] test utils::constrain::tests::test_empty_text ... ok
[INFO] [stdout] test utils::constrain::tests::test_styled_content_preserved ... ok
[INFO] [stdout] test utils::constrain::tests::test_width_equal_to_content ... ok
[INFO] [stdout] test utils::constrain::tests::test_width_larger_than_content ... ok
[INFO] [stdout] test utils::constrain::tests::test_width_smaller_than_content ... ok
[INFO] [stdout] test utils::constrain::tests::test_width_min_of_width_and_max_width ... ok
[INFO] [stdout] test utils::box_chars::tests::test_plain_headed_ascii_double_head ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_construction_empty ... ok
[INFO] [stdout] test utils::constrain::tests::test_zero_width ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_construction_with_items ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_index_access ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_extend ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_index_mut_access ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_center ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_full_multiple_words ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_full ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_full_odd_remainder ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_full_single_word ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_full_uneven_spacing ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_left ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_len_is_empty ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_justify_right ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_pop ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_renderable_empty ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_renderable_single ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_renderable_multiple ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_append ... ok
[INFO] [stdout] test utils::containers::tests::test_lines_append ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_measure_empty ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_default ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_empty ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_measure_multiple ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_measure_correct_min_max ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_measure_single ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_multiple_items ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_renderable_multiple ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_renderable_empty ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_single_item ... ok
[INFO] [stdout] test utils::control::tests::test_alt_screen ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_renderable_preserves_order ... ok
[INFO] [stdout] test utils::control::tests::test_base64_encode_hello_world ... ok
[INFO] [stdout] test utils::control::tests::test_base64_encode_rfc4648_vectors ... ok
[INFO] [stdout] test utils::control::tests::test_base64_encode_unicode ... ok
[INFO] [stdout] test utils::control::tests::test_base64_encode_empty ... ok
[INFO] [stdout] test utils::control::tests::test_begin_sync_segment_is_control ... ok
[INFO] [stdout] test utils::containers::tests::test_renderables_renderable_single ... ok
[INFO] [stdout] test utils::control::tests::test_bell ... ok
[INFO] [stdout] test utils::control::tests::test_control_cursor_move ... ok
[INFO] [stdout] test utils::control::tests::test_clear ... ok
[INFO] [stdout] test utils::control::tests::test_begin_sync ... ok
[INFO] [stdout] test utils::control::tests::test_control_cursor_move_negative ... ok
[INFO] [stdout] test utils::control::tests::test_control_cursor_move_zero ... ok
[INFO] [stdout] test utils::control::tests::test_display ... ok
[INFO] [stdout] test utils::control::tests::test_control_move_to ... ok
[INFO] [stdout] test utils::control::tests::test_end_sync ... ok
[INFO] [stdout] test utils::control::tests::test_end_sync_segment_is_control ... ok
[INFO] [stdout] test utils::control::tests::test_escape_control_codes_all ... ok
[INFO] [stdout] test utils::control::tests::test_escape_control_codes_cr ... ok
[INFO] [stdout] test utils::control::tests::test_escape_control_codes_empty ... ok
[INFO] [stdout] test utils::control::tests::test_home ... ok
[INFO] [stdout] test utils::control::tests::test_move_to_column ... ok
[INFO] [stdout] test utils::control::tests::test_move_to_column_no_row ... ok
[INFO] [stdout] test utils::control::tests::test_request_clipboard ... ok
[INFO] [stdout] test utils::control::tests::test_escape_control_codes_normal ... ok
[INFO] [stdout] test utils::control::tests::test_request_clipboard_segment_is_control ... ok
[INFO] [stdout] test utils::control::tests::test_set_clipboard ... ok
[INFO] [stdout] test utils::control::tests::test_set_clipboard_empty ... ok
[INFO] [stdout] test utils::control::tests::test_set_clipboard_unicode ... ok
[INFO] [stdout] test utils::control::tests::test_show_cursor ... ok
[INFO] [stdout] test utils::control::tests::test_strip_control_codes_all ... ok
[INFO] [stdout] test utils::control::tests::test_strip_control_codes_normal ... ok
[INFO] [stdout] test utils::control::tests::test_title ... ok
[INFO] [stdout] test utils::default_styles::tests::test_all_known_keys_present ... ok
[INFO] [stdout] test utils::default_styles::tests::test_bar_back ... ok
[INFO] [stdout] test utils::default_styles::tests::test_bar_complete ... ok
[INFO] [stdout] test utils::control::tests::test_strip_control_codes_cr ... ok
[INFO] [stdout] test utils::default_styles::tests::test_bold_style ... ok
[INFO] [stdout] test utils::default_styles::tests::test_bright_style ... ok
[INFO] [stdout] test utils::default_styles::tests::test_code_style ... ok
[INFO] [stdout] test utils::default_styles::tests::test_color_styles ... ok
[INFO] [stdout] test utils::default_styles::tests::test_default_styles_count ... ok
[INFO] [stdout] test utils::default_styles::tests::test_dim_style ... ok
[INFO] [stdout] test utils::default_styles::tests::test_inspect_attr ... ok
[INFO] [stdout] test utils::control::tests::test_strip_control_codes_empty ... ok
[INFO] [stdout] test utils::control::tests::test_control_bell ... ok
[INFO] [stdout] test utils::default_styles::tests::test_inspect_attr_dunder ... ok
[INFO] [stdout] test utils::default_styles::tests::test_logging_level_critical ... ok
[INFO] [stdout] test utils::default_styles::tests::test_markdown_code ... ok
[INFO] [stdout] test utils::default_styles::tests::test_none_is_null ... ok
[INFO] [stdout] test utils::default_styles::tests::test_repr_str ... ok
[INFO] [stdout] test utils::default_styles::tests::test_null_styles ... ok
[INFO] [stdout] test utils::default_styles::tests::test_reset_style ... ok
[INFO] [stdout] test utils::diagnose::tests::test_color_support_color_system ... ok
[INFO] [stdout] test utils::diagnose::tests::test_color_support_name ... ok
[INFO] [stdout] test utils::diagnose::tests::test_color_support_detection ... ok
[INFO] [stdout] test utils::diagnose::tests::test_platform_info_detection ... ok
[INFO] [stdout] test utils::diagnose::tests::test_diagnostic_report_generation ... ok
[INFO] [stdout] test utils::diagnose::tests::test_terminal_info_detection ... ok
[INFO] [stdout] test utils::diagnose::tests::test_unicode_support_detection ... ok
[INFO] [stdout] test utils::default_styles::tests::test_default_styles_clone ... ok
[INFO] [stdout] test utils::diagnose::tests::test_report_formatting ... ok
[INFO] [stdout] test utils::emoji::tests::test_chained_builders ... ok
[INFO] [stdout] test utils::emoji::tests::test_debug_trait ... ok
[INFO] [stdout] test utils::emoji::tests::test_display_trait ... ok
[INFO] [stdout] test utils::emoji::tests::test_no_emoji_error_display ... ok
[INFO] [stdout] test utils::emoji::tests::test_new_invalid_name ... ok
[INFO] [stdout] test utils::emoji::tests::test_renderable_trait ... ok
[INFO] [stdout] test utils::emoji::tests::test_with_style ... ok
[INFO] [stdout] test utils::emoji::tests::test_with_style_renderable ... ok
[INFO] [stdout] test utils::emoji::tests::test_with_variant_emoji ... ok
[INFO] [stdout] test utils::emoji::tests::test_with_variant_text ... ok
[INFO] [stdout] test utils::emoji::tests::test_with_variant_unknown ... ok
[INFO] [stdout] test utils::emoji_codes::tests::test_emoji_map_not_empty ... ok
[INFO] [stdout] test utils::emoji_codes::tests::test_known_lookups ... ok
[INFO] [stdout] test utils::emoji_codes::tests::test_unknown_name_returns_none ... ok
[INFO] [stdout] test utils::emoji::tests::test_replace_class_method ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_default_variant_emoji ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_case_insensitive_name ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_empty_string ... ok
[INFO] [stdout] test utils::emoji::tests::test_new_valid_name ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_default_variant_text ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_explicit_variant_overrides_default ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_multiple_emojis ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_no_emojis_passthrough ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_simple_replacement ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_unknown_emoji_unchanged ... ok
[INFO] [stdout] test utils::file_proxy::tests::buffers_until_newline ... ok
[INFO] [stdout] test utils::file_proxy::tests::explicit_flush_keeps_partial_buffered ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_variant_text ... ok
[INFO] [stdout] test utils::file_proxy::tests::drop_flushes_partial_line ... ok
[INFO] [stdout] test utils::file_proxy::tests::multi_line_in_one_write ... ok
[INFO] [stdout] test utils::file_proxy::tests::writes_no_op_after_sink_dropped ... ok
[INFO] [stdout] test utils::emoji_replace::tests::test_variant_emoji ... ok
[INFO] [stdout] test utils::file_proxy::tests::is_alive_tracks_sink_lifetime ... ok
[INFO] [stdout] test utils::filesize::tests::binary_1_5_mebibytes ... ok
[INFO] [stdout] test utils::filesize::tests::binary_30000 ... ok
[INFO] [stdout] test syntax::tests::test_json_highlighting ... ok
[INFO] [stdout] test utils::file_proxy::tests::marks_stderr ... ok
[INFO] [stdout] test utils::filesize::tests::binary_1536 ... ok
[INFO] [stdout] test utils::filesize::tests::binary_exactly_1024 ... ok
[INFO] [stdout] test utils::filesize::tests::binary_exbibyte ... ok
[INFO] [stdout] test utils::filesize::tests::binary_formats_kibibytes ... ok
[INFO] [stdout] test utils::filesize::tests::binary_formats_mebibytes ... ok
[INFO] [stdout] test utils::filesize::tests::binary_one_byte ... ok
[INFO] [stdout] test utils::filesize::tests::binary_one_gibibyte ... ok
[INFO] [stdout] test utils::filesize::tests::binary_one_mebibyte ... ok
[INFO] [stdout] test utils::filesize::tests::binary_one_tebibyte ... ok
[INFO] [stdout] test utils::filesize::tests::binary_pebibyte ... ok
[INFO] [stdout] test utils::filesize::tests::binary_precision_2 ... ok
[INFO] [stdout] test utils::filesize::tests::binary_precision_0 ... ok
[INFO] [stdout] test utils::filesize::tests::binary_under_one_kib ... ok
[INFO] [stdout] test utils::filesize::tests::binary_small_bytes ... ok
[INFO] [stdout] test utils::filesize::tests::binary_zero_bytes ... ok
[INFO] [stdout] test utils::filesize::tests::commas_large ... ok
[INFO] [stdout] test utils::filesize::tests::commas_small ... ok
[INFO] [stdout] test utils::filesize::tests::commas_millions ... ok
[INFO] [stdout] test utils::filesize::tests::commas_thousands ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_1500 ... ok
[INFO] [stdout] test utils::filesize::tests::commas_zero ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_1_500_000 ... ok
[INFO] [stdout] test utils::filesize::tests::binary_dash_separator ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_bytes_with_commas ... ok
[INFO] [stdout] test utils::filesize::tests::binary_empty_separator ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_999999 ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_30000 ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_exabyte ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_exactly_1000 ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_formats_gigabytes ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_dash_separator ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_empty_separator ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_formats_bytes_below_kilo ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_formats_kilobytes ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_formats_megabytes ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_one_billion ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_one_byte ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_one_million ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_precision_2 ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_one_trillion ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_small_bytes ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_petabyte ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_zero_bytes ... ok
[INFO] [stdout] test utils::filesize::tests::pick_unit_falls_through ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_zero ... ok
[INFO] [stdout] test utils::filesize::tests::pick_unit_medium_size ... ok
[INFO] [stdout] test utils::filesize::tests::pick_unit_small_size ... ok
[INFO] [stdout] test utils::group::tests::test_clone ... ok
[INFO] [stdout] test utils::filesize::tests::pick_unit_large_size ... ok
[INFO] [stdout] test utils::group::tests::test_empty_group ... ok
[INFO] [stdout] test utils::filesize::tests::decimal_precision_0 ... ok
[INFO] [stdout] test utils::group::tests::test_console_render_integration ... ok
[INFO] [stdout] test utils::group::tests::test_fit_creates_fit_group ... ok
[INFO] [stdout] test utils::group::tests::test_debug ... ok
[INFO] [stdout] test utils::group::tests::test_measure_fit_empty ... ok
[INFO] [stdout] test utils::group::tests::test_measure_fit_matches_content ... ok
[INFO] [stdout] test utils::group::tests::test_measure_non_fit_fills_width ... ok
[INFO] [stdout] test utils::group::tests::test_render_contains_all_items ... ok
[INFO] [stdout] test utils::group::tests::test_render_empty_group ... ok
[INFO] [stdout] test utils::group::tests::test_items_accessor ... ok
[INFO] [stdout] test utils::group::tests::test_measure_fit_clamped_to_max_width ... ok
[INFO] [stdout] test utils::group::tests::test_fit_rendering_constrains_width ... ok
[INFO] [stdout] test utils::group::tests::test_new_creates_non_fit_group ... ok
[INFO] [stdout] test utils::group::tests::test_render_preserves_order ... ok
[INFO] [stdout] test utils::group::tests::test_styled_content_preserved ... ok
[INFO] [stdout] test utils::highlighter::tests::test_apply_creates_new_text ... ok
[INFO] [stdout] test utils::highlighter::tests::test_apply_text_clones_and_highlights ... ok
[INFO] [stdout] test utils::group::tests::test_render_single_item ... ok
[INFO] [stdout] test utils::highlighter::tests::test_apply_text_preserves_original ... ok
[INFO] [stdout] test utils::highlighter::tests::test_combine_regex_empty ... ok
[INFO] [stdout] test utils::highlighter::tests::test_combine_regex_single ... ok
[INFO] [stdout] test utils::highlighter::tests::test_apply_with_json_highlighter ... ok
[INFO] [stdout] test utils::highlighter::tests::test_combine_regex ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_calendar_month ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_datetime ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_calendar_date ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_highlighter_default ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_datetime_with_ms ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_time ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_highlighter_new ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso8601_time_with_timezone ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso_date_highlighter_date_only ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso_date_highlighter_datetime_utc ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso_date_highlighter_default ... ok
[INFO] [stdout] test utils::highlighter::tests::test_iso_date_highlighter_full_datetime_with_tz ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_braces ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_booleans_and_null ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_highlighter_default ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_highlighter_new ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_key_detection ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_key_with_whitespace_before_colon ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_numbers ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_path_highlighter_default ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_path_highlighter_dollar_prefix ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_path_highlighter_no_match ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_path_highlighter_dot_notation ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_strings ... ok
[INFO] [stdout] test utils::highlighter::tests::test_json_value_string_not_key ... ok
[INFO] [stdout] test utils::highlighter::tests::test_null_highlighter_does_nothing ... ok
[INFO] [stdout] test utils::highlighter::tests::test_regex_highlighter_basic ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_highlighter_default ... ok
[INFO] [stdout] test utils::highlighter::tests::test_apply_text_with_repr_highlighter ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_braces ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_ipv6 ... ok
[INFO] [stdout] test utils::highlighter::tests::test_apply_with_repr_highlighter ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_ipv4 ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_highlighter_new ... ok
[INFO] [stdout] test panel::tests::test_panel_highlight_renders ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_booleans ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_tags ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_paths ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_urls ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_strings ... ok
[INFO] [stdout] test utils::highlighter::tests::test_url_highlighter_no_match_plain_text ... ok
[INFO] [stdout] test utils::highlighter::tests::test_url_highlighter_default ... ok
[INFO] [stdout] test utils::highlighter::tests::test_url_highlighter_http ... ok
[INFO] [stdout] test utils::highlighter::tests::test_url_highlighter_https ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_uuid ... ok
[INFO] [stdout] test utils::highlighter::tests::test_uuid_highlighter_ignores_partial_hex ... ok
[INFO] [stdout] test utils::highlighter::tests::test_uuid_highlighter_valid_uuid ... ok
[INFO] [stdout] test utils::inspect::tests::test_display_trait ... ok
[INFO] [stdout] test utils::highlighter::tests::test_uuid_highlighter_default ... ok
[INFO] [stdout] test utils::highlighter::tests::test_uuid_highlighter_uppercase ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_display_with_width ... ok
[INFO] [stdout] test utils::highlighter::tests::test_repr_numbers ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_empty_struct ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_builder_chaining ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_hashmap ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_string ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_option_none ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_vec_i32 ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_struct ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_with_custom_title ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_pretty_false ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_option_some ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_with_label ... ok
[INFO] [stdout] test utils::inspect::tests::test_short_type_name_simple ... ok
[INFO] [stdout] test utils::inspect::tests::test_type_name_extracted ... ok
[INFO] [stdout] test utils::inspect::tests::test_type_name_field ... ok
[INFO] [stdout] test utils::padding::tests::test_indent ... ok
[INFO] [stdout] test utils::inspect::tests::test_short_type_name_in_default_title ... ok
[INFO] [stdout] test utils::padding::tests::test_indent_rendering ... ok
[INFO] [stdout] test utils::inspect::tests::test_short_type_name_nested_generic ... ok
[INFO] [stdout] test utils::inspect::tests::test_inspect_with_doc ... ok
[INFO] [stdout] test utils::inspect::tests::test_renderable_produces_segments ... ok
[INFO] [stdout] test utils::padding::tests::test_measure ... ok
[INFO] [stdout] test utils::padding::tests::test_padding_dimensions_equality ... ok
[INFO] [stdout] test utils::padding::tests::test_measure_no_expand ... ok
[INFO] [stdout] test utils::padding::tests::test_padding_new ... ok
[INFO] [stdout] test utils::padding::tests::test_padding_with_styled_content ... ok
[INFO] [stdout] test utils::padding::tests::test_render_expand_fills_width ... ok
[INFO] [stdout] test utils::padding::tests::test_unpack_full ... ok
[INFO] [stdout] test utils::padding::tests::test_render_no_expand_minimal_width ... ok
[INFO] [stdout] test utils::padding::tests::test_render_top_bottom_padding ... ok
[INFO] [stdout] test utils::padding::tests::test_render_with_left_padding ... ok
[INFO] [stdout] test utils::padding::tests::test_render_no_padding ... ok
[INFO] [stdout] test utils::padding::tests::test_unpack_pair ... ok
[INFO] [stdout] test utils::padding::tests::test_unpack_uniform_zero ... ok
[INFO] [stdout] test utils::padding::tests::test_unpack_uniform ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_chaining ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_indent_size ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_max_length ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_max_string ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_no_wrap ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_indent_guides ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_overflow ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_type_annotation ... ok
[INFO] [stdout] test utils::pretty::tests::test_escape_json_string_quotes ... ok
[INFO] [stdout] test utils::pretty::tests::test_expand_all_forces_expansion ... ok
[INFO] [stdout] test utils::pretty::tests::test_display_trait ... ok
[INFO] [stdout] test utils::pretty::tests::test_escape_json_string_basic ... ok
[INFO] [stdout] test utils::pretty::tests::test_expand_all_false_compact ... ok
[INFO] [stdout] test utils::pretty::tests::test_format_json_empty_array ... ok
[INFO] [stdout] test utils::pretty::tests::test_all_params_combined ... ok
[INFO] [stdout] test utils::pretty::tests::test_format_json_empty_object ... ok
[INFO] [stdout] test utils::pretty::tests::test_expand_all_object ... ok
[INFO] [stdout] test utils::pretty::tests::test_format_json_value_bool ... ok
[INFO] [stdout] test utils::pretty::tests::test_builder_with_expand_all ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_debug_primitive ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_debug_struct ... ok
[INFO] [stdout] test utils::pretty::tests::test_format_json_value_null ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_json_array ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_json_highlighting ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_str_empty ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_json_nested_object ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_json_simple_object ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_debug_vec ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_str_single_line ... ok
[INFO] [stdout] test utils::pretty::tests::test_indent_guides_applied ... ok
[INFO] [stdout] test utils::pretty::tests::test_indent_guides_multi_level ... ok
[INFO] [stdout] test utils::pretty::tests::test_indent_guides_disabled ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_array ... ok
[INFO] [stdout] test utils::pretty::tests::test_indent_guides_no_indentation ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_empty ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_number ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_bool ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_string ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_object ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_null ... ok
[INFO] [stdout] test utils::pretty::tests::test_infer_type_name_struct ... ok
[INFO] [stdout] test utils::pretty::tests::test_max_length_none_shows_all ... ok
[INFO] [stdout] test utils::pretty::tests::test_max_length_truncates_object ... ok
[INFO] [stdout] test utils::pretty::tests::test_max_length_truncates_array ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_str_simple ... ok
[INFO] [stdout] test utils::pretty::tests::test_max_length_with_nested_arrays ... ok
[INFO] [stdout] test utils::pretty::tests::test_max_string_none_shows_full ... ok
[INFO] [stdout] test utils::pretty::tests::test_max_string_short_string_not_truncated ... ok
[INFO] [stdout] test utils::pretty::tests::test_measure_empty ... ok
[INFO] [stdout] test utils::pretty::tests::test_max_string_truncates ... ok
[INFO] [stdout] test utils::pretty::tests::test_measure_json ... ok
[INFO] [stdout] test utils::pretty::tests::test_measure_multiline ... ok
[INFO] [stdout] test utils::pretty::tests::test_measure_simple ... ok
[INFO] [stdout] test utils::pretty::tests::test_renderable_produces_segments ... ok
[INFO] [stdout] test utils::pretty::tests::test_renderable_json ... ok
[INFO] [stdout] test utils::pretty::tests::test_truncate_string_at_limit ... ok
[INFO] [stdout] test utils::pretty::tests::test_truncate_string_none ... ok
[INFO] [stdout] test utils::pretty::tests::test_truncate_string_over_limit ... ok
[INFO] [stdout] test utils::pretty::tests::test_truncate_string_within_limit ... ok
[INFO] [stdout] test utils::pretty::tests::test_type_annotation_default_false ... ok
[INFO] [stdout] test utils::pretty::tests::test_renderable_with_no_wrap ... ok
[INFO] [stdout] test utils::pretty::tests::test_type_annotation_disabled_no_prefix ... ok
[INFO] [stdout] test utils::pretty::tests::test_type_annotation_prepends_type_for_json_array ... ok
[INFO] [stdout] test utils::pretty::tests::test_rebuild_debug_max_string ... ok
[INFO] [stdout] test utils::pretty::tests::test_renderable_debug_struct ... ok
[INFO] [stdout] test utils::pretty::tests::test_from_str_repr_highlighting ... ok
[INFO] [stdout] test utils::protocol::tests::test_as_renderable_ref ... ok
[INFO] [stdout] test utils::protocol::tests::test_gilt_cast_failure ... ok
[INFO] [stdout] test utils::pretty::tests::test_type_annotation_prepends_type_for_json_object ... ok
[INFO] [stdout] test utils::protocol::tests::test_gilt_cast_success ... ok
[INFO] [stdout] test utils::protocol::tests::test_gilt_cast_with_panel ... ok
[INFO] [stdout] test utils::protocol::tests::test_into_renderable_blanket_impl ... ok
[INFO] [stdout] test utils::protocol::tests::test_gilt_cast_trait ... ok
[INFO] [stdout] test utils::protocol::tests::test_collection_of_boxes ... ok
[INFO] [stdout] test utils::protocol::tests::test_gilt_cast_impl_macro ... ok
[INFO] [stdout] test utils::protocol::tests::test_is_type ... ok
[INFO] [stdout] test utils::protocol::tests::test_renderable_box_from_panel ... ok
[INFO] [stdout] test utils::protocol::tests::test_renderable_ext ... ok
[INFO] [stdout] test utils::pretty::tests::test_type_annotation_for_debug_struct ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_minimums_zeroes_ratios ... ok
[INFO] [stdout] test utils::protocol::tests::test_renderable_box ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_single ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_sum_equals_total ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_unequal ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_three_equal ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_equal ... ok
[INFO] [stdout] test utils::ratio::tests::test_reduce_all_zero_maximums ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_with_minimums ... ok
[INFO] [stdout] test utils::ratio::tests::test_reduce_capped_by_maximum ... ok
[INFO] [stdout] test utils::ratio::tests::test_reduce_empty ... ok
[INFO] [stdout] test utils::ratio::tests::test_reduce_normal ... ok
[INFO] [stdout] test utils::ratio::tests::test_reduce_single ... ok
[INFO] [stdout] test utils::ratio::tests::test_reduce_zero_ratios ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_all_flexible_unequal_ratio ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_fixed_larger_than_total ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_minimum_size_constraint ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_mixed_fixed_and_flexible ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_remainder_distribution ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_all_fixed ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_ratio_2_1 ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_single_flexible ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_all_flexible_equal_ratio ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_zero_remaining ... ok
[INFO] [stdout] test utils::region::tests::test_debug ... ok
[INFO] [stdout] test utils::ratio::tests::test_resolve_zero_total ... ok
[INFO] [stdout] test utils::region::tests::test_new ... ok
[INFO] [stdout] test utils::region::tests::test_clone ... ok
[INFO] [stdout] test utils::region::tests::test_zero_dimensions ... ok
[INFO] [stdout] test utils::region::tests::test_equality ... ok
[INFO] [stdout] test utils::region::tests::test_negative_coordinates ... ok
[INFO] [stdout] test utils::scope::tests::render_preserves_styling_from_inner_table ... ok
[INFO] [stdout] test utils::scope::tests::test_builder_title ... ok
[INFO] [stdout] test utils::ratio::tests::test_distribute_zero_ratios_panics - should panic ... ok
[INFO] [stdout] test utils::scope::tests::test_case_insensitive_sort ... ok
[INFO] [stdout] test utils::scope::tests::test_empty_scope ... ok
[INFO] [stdout] test utils::scope::tests::test_dunder_keys_sorted_first ... ok
[INFO] [stdout] test utils::scope::tests::test_add_items ... ok
[INFO] [stdout] test utils::scope::tests::test_builder_chain ... ok
[INFO] [stdout] test utils::scope::tests::test_from_pairs ... ok
[INFO] [stdout] test utils::scope::tests::test_key_contains_equals ... ok
[INFO] [stdout] test utils::scope::tests::test_no_sort_preserves_order ... ok
[INFO] [stdout] test utils::scope::tests::test_builder_sort_keys ... ok
[INFO] [stdout] test utils::scope::tests::test_long_values ... ok
[INFO] [stdout] test utils::scope::tests::test_multiple_dunder_keys_sorted ... ok
[INFO] [stdout] test utils::scope::tests::test_multiple_pairs ... ok
[INFO] [stdout] test utils::scope::tests::test_no_title ... ok
[INFO] [stdout] test utils::scope::tests::test_numeric_values ... ok
[INFO] [stdout] test utils::scope::tests::test_ordered_items_dunders_first ... ok
[INFO] [stdout] test utils::scope::tests::test_ordered_items_no_sort ... ok
[INFO] [stdout] test utils::scope::tests::test_ordered_items_sort ... ok
[INFO] [stdout] test utils::scope::tests::test_panel_has_border ... ok
[INFO] [stdout] test utils::scope::tests::test_render_scope_empty ... ok
[INFO] [stdout] test utils::scope::tests::test_scope_clone ... ok
[INFO] [stdout] test utils::scope::tests::test_render_scope_function ... ok
[INFO] [stdout] test utils::scope::tests::test_renderable_trait ... ok
[INFO] [stdout] test utils::scope::tests::test_renderable_produces_panel ... ok
[INFO] [stdout] test utils::scope::tests::test_render_scope_no_title ... ok
[INFO] [stdout] test utils::scope::tests::test_special_key_format ... ok
[INFO] [stdout] test utils::scope::tests::test_title_displayed ... ok
[INFO] [stdout] test utils::scope::tests::test_sort_keys_alphabetical ... ok
[INFO] [stdout] test utils::scope::tests::test_value_rendered ... ok
[INFO] [stdout] test utils::styled::tests::test_clone ... ok
[INFO] [stdout] test utils::styled::tests::test_measure_empty ... ok
[INFO] [stdout] test utils::styled::tests::test_measure_unchanged ... ok
[INFO] [stdout] test utils::styled::tests::test_console_render ... ok
[INFO] [stdout] test utils::styled::tests::test_measure_multiline ... ok
[INFO] [stdout] test utils::styled::tests::test_new_complex_style ... ok
[INFO] [stdout] test utils::styled::tests::test_new_basic ... ok
[INFO] [stdout] test utils::scope::tests::test_single_pair ... ok
[INFO] [stdout] test utils::styled::tests::test_new_null_style ... ok
[INFO] [stdout] test utils::styled::tests::test_null_style_passthrough ... ok
[INFO] [stdout] test utils::styled::tests::test_render_applies_style_to_all_segments ... ok
[INFO] [stdout] test utils::styled::tests::test_style_combines_with_existing ... ok
[INFO] [stdout] test utils::styled::tests::test_render_applies_style ... ok
[INFO] [stdout] test utils::styled_str::tests::test_all_attributes ... ok
[INFO] [stdout] test utils::styled_str::tests::test_all_bg_colors ... ok
[INFO] [stdout] test utils::styled_str::tests::test_chain_bold_red ... ok
[INFO] [stdout] test utils::styled_str::tests::test_chain_on_color ... ok
[INFO] [stdout] test utils::styled_str::tests::test_complex_chain ... ok
[INFO] [stdout] test utils::styled_str::tests::test_display ... ok
[INFO] [stdout] test utils::styled_str::tests::test_fg_and_bg_arbitrary ... ok
[INFO] [stdout] test utils::styled_str::tests::test_link ... ok
[INFO] [stdout] test utils::styled_str::tests::test_styled_method_with_parsed_style ... ok
[INFO] [stdout] test utils::styled::tests::test_style_overlay_color ... ok
[INFO] [stdout] test utils::styled_str::tests::test_all_colors ... ok
[INFO] [stdout] test utils::styled_str::tests::test_styled_str_renderable ... ok
[INFO] [stdout] test widgets::table::core::padding_tests::padding_width_grid_default_is_zero_everywhere ... ok
[INFO] [stdout] test widgets::table::core::padding_tests::padding_width_grid_with_explicit_padding_collapses_correctly ... ok
[INFO] [stdout] test widgets::table::core::padding_tests::padding_width_measure_and_render_paths_agree ... ok
[INFO] [stdout] test utils::styled_str::tests::test_bold_str ... ok
[INFO] [stdout] test utils::styled_str::tests::test_stylize_string ... ok
[INFO] [stdout] test widgets::table::core::padding_tests::padding_width_collapsed_zeros_left_only_for_non_first_columns ... ok
[INFO] [stdout] test utils::styled_str::tests::test_styled_str_text_conversion ... ok
[INFO] [stdout] test widgets::table::core::padding_tests::padding_width_single_column_pad_edge_off_zeros_both_sides ... ok
[INFO] [stdout] test wrap::tests::test_byte_to_char_map_ascii ... ok
[INFO] [stdout] test widgets::table::core::renderable_cell_tests::add_row_renderable_renders_simple_text ... ok
[INFO] [stdout] test wrap::tests::test_byte_to_char_map_empty ... ok
[INFO] [stdout] test wrap::tests::test_byte_to_char_map_mixed ... ok
[INFO] [stdout] test widgets::table::core::renderable_cell_tests::add_row_renderable_falls_back_to_text_path_for_text_input ... ok
[INFO] [stdout] test utils::pretty::tests::test_indent_guides_custom_size ... ok
[INFO] [stdout] test widgets::table::core::renderable_cell_tests::add_row_renderable_with_panel_inside_cell ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_all_spaces_yields_nothing ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_cjk_fold ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_cjk_width_4 ... ok
[INFO] [stdout] test wrap::tests::test_byte_to_char_map_multibyte ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_empty_string ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_exact_fit ... ok
[INFO] [stdout] test widgets::table::core::padding_tests::padding_width_no_pad_edge_zeros_outer_padding ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_fold_long_word_after_short ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_fold_single_char_width ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_fold_long_word ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_fits_on_one_line ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_no_fold ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_many_short_words ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_simple_width_3 ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_simple_width_4 ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_cjk_with_ascii ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_no_fold_long_word_after_short ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_simple_width_7 ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_width_zero ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_single_char ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_single_word_fits ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_word_exactly_width ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_word_with_leading_spaces ... ok
[INFO] [stdout] test wrap::tests::test_words_basic ... ok
[INFO] [stdout] test wrap::tests::test_words_cjk ... ok
[INFO] [stdout] test wrap::tests::test_words_leading_whitespace ... ok
[INFO] [stdout] test wrap::tests::test_words_empty_string ... ok
[INFO] [stdout] test wrap::tests::test_words_single_word ... ok
[INFO] [stdout] test wrap::tests::test_words_no_trailing_space ... ok
[INFO] [stdout] test wrap::tests::test_words_trailing_whitespace ... ok
[INFO] [stdout] test wrap::tests::test_words_only_whitespace ... ok
[INFO] [stdout] test wrap::tests::test_words_multiple_spaces_between ... ok
[INFO] [stdout] test wrap::tests::test_divide_line_two_words_each_exactly_width ... ok
[INFO] [stdout] test syntax::tests::test_segments_have_styles ... ok
[INFO] [stdout] test syntax::tests::test_display_trait ... ok
[INFO] [stdout] test syntax::tests::test_renderable_trait ... ok
[INFO] [stdout] test syntax::tests::test_theme_base16_ocean_dark ... ok
[INFO] [stdout] test syntax::tests::test_theme_base16_eighties_dark ... ok
[INFO] [stdout] test syntax::tests::test_code_with_special_characters ... ok
[INFO] [stdout] test syntax::tests::test_different_themes_produce_output ... ok
[INFO] [stdout] test syntax::tests::test_python_highlighting ... ok
[INFO] [stdout] test syntax::tests::test_basic_rust_highlighting ... ok
[INFO] [stdout] test console::tests::test_render_large_text ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2166 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.74s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/derive_table.rs (/opt/rustwide/target/debug/deps/derive_table-c1a8ec87c123381f)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-661a86e04ed00ad5)
[INFO] [stdout] 
[INFO] [stdout] running 21 tests
[INFO] [stdout] test style_parse_complex ... ok
[INFO] [stdout] test rule_renders_without_title ... ok
[INFO] [stdout] test rule_renders_with_title ... ok
[INFO] [stdout] test progress_bar_renders ... ok
[INFO] [stdout] test console_line_outputs_newlines ... ok
[INFO] [stdout] test text_from_ansi_roundtrip ... ok
[INFO] [stdout] Hello export
[INFO] [stdout] SVG content
[INFO] [stdout] test export_text_captures_output ... ok
[INFO] [stdout] test columns_renders_grid ... ok
[INFO] [stdout] test table_renders_with_data ... ok
[INFO] [stdout] test export_svg_contains_svg_tags ... ok
[INFO] [stdout] test tree_renders_hierarchy ... ok
[INFO] [stdout] test console_log_includes_timestamp ... ok
[INFO] [stdout] test markdown_renders_heading ... ok
[INFO] [stdout] test global_print_text_does_not_panic ... ok
[INFO] [stdout] test panel_wraps_text ... ok
[INFO] [stdout] test measure_text_widget ... ok
[INFO] [stdout] [1mBold text[0m
[INFO] [stdout] test export_html_contains_markup ... ok
[INFO] [stdout] test text_with_markup_renders ... ok
[INFO] [stdout] test text_from_markup_roundtrip ... ok
[INFO] [stdout] test json_pretty_prints ... ok
[INFO] [stdout] test syntax_highlights_rust ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.49s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/progress_unit.rs (/opt/rustwide/target/debug/deps/progress_unit-aba89f8aced54a0f)
[INFO] [stdout] 
[INFO] [stdout] running 17 tests
[INFO] [stdout] test task_create_with_total_zero ... ok
[INFO] [stdout] test time_remaining_column_unknown_total_renders_dashes ... ok
[INFO] [stdout] test time_elapsed_column_format ... ok
[INFO] [stdout] test compact_time_remaining_column_format ... ok
[INFO] [stdout] test text_column_substitutes_task_description ... ok
[INFO] [stdout] test download_column_uses_binary_units ... ok
[INFO] [stdout] test reset_clears_completed_and_restarts_start_time ... ok
[INFO] [stdout] test task_progress_finished_speed_freezes_after_completion ... ok
[INFO] [stdout] test task_finished_when_completed_equals_total ... ok
[INFO] [stdout] test task_speed_window_estimate ... ok
[INFO] [stdout] test transfer_speed_column_after_some_advance ... ok
[INFO] [stdout] test task_ids_are_monotonic ... ok
[INFO] [stdout] test bar_column_renders_partial_progress ... ok
[INFO] [stdout] test progress_with_none_total_renders_pulse_bar ... ok
[INFO] [stdout] test expand_bar_fills_remaining_width ... ok
[INFO] [stdout] test download_column_uses_decimal_units_below_threshold ... ok
[INFO] [stdout] test spinner_column_animates_with_elapsed ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/proptests.rs (/opt/rustwide/target/debug/deps/proptests-cfd5a6de636796e1)
[INFO] [stdout] 
[INFO] [stdout] running 20 tests
[INFO] [stdout] test color_triplet_hex_roundtrip ... ok
[INFO] [stdout] test color_triplet_normalized_in_range ... ok
[INFO] [stdout] test style_parse_not_attribute ... ok
[INFO] [stdout] test color_downgrade_to_truecolor_is_identity ... ok
[INFO] [stdout] test color_downgrade_eightbit_to_standard ... ok
[INFO] [stdout] test cell_len_empty_is_zero ... ok
[INFO] [stdout] test color_downgrade_truecolor_to_standard ... ok
[INFO] [stdout] test style_parse_single_attribute ... ok
[INFO] [stdout] test segment_split_ascii_content_preserved ... ok
[INFO] [stdout] test color_downgrade_truecolor_to_eightbit ... ok
[INFO] [stdout] test segment_split_preserves_style ... ok
[INFO] [stdout] test style_parse_roundtrip ... ok
[INFO] [stdout] test segment_split_preserves_total_width ... ok
[INFO] [stdout] test text_wrapping_single_words ... ok
[INFO] [stdout] test cell_len_geq_char_count_for_printable ... ok
[INFO] [stdout] test text_wrapping_respects_width ... ok
[INFO] [stdout] test text_wrapping_with_spaces ... ok
[INFO] [stdout] test segment_split_left_width_bounded ... ok
[INFO] [stdout] test cell_len_is_nonnegative ... ok
[INFO] [stdout] test cell_len_is_at_least_char_count_for_ascii ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.86s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/segment_unit.rs (/opt/rustwide/target/debug/deps/segment_unit-7a63a8a3328be00a)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test divide_complex_multi_segment ... ok
[INFO] [stdout] test divide_emoji_at_2_cell_boundary ... ok
[INFO] [stdout] test divide_at_exact_segment_start ... ok
[INFO] [stdout] test divide_at_exact_segment_end ... ok
[INFO] [stdout] test split_lines_terminator_keeps_newline ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/table_unit.rs (/opt/rustwide/target/debug/deps/table_unit-507feeb388d7b4df)
[INFO] [stdout] 
[INFO] [stdout] running 23 tests
[INFO] [stdout] test padding_default_consistent_with_get_padding_width ... ok
[INFO] [stdout] test auto_created_columns_inherit_highlight_flag ... ok
[INFO] [stdout] test explicit_columns_inherit_highlight_from_table ... ok
[INFO] [stdout] test no_columns_no_panic ... ok
[INFO] [stdout] test measure_returns_nonzero_for_populated_table ... ok
[INFO] [stdout] test measure_zero_width_returns_zero ... ok
[INFO] [stdout] test box_minimal_has_no_outer_edges ... ok
[INFO] [stdout] test box_square_uses_square_corners ... ok
[INFO] [stdout] test vertical_align_top_does_not_panic ... ok
[INFO] [stdout] test render_table_basic ... ok
[INFO] [stdout] test vertical_align_bottom_does_not_panic ... ok
[INFO] [stdout] test width_clamps_output ... ok
[INFO] [stderr]    Doc-tests gilt
[INFO] [stdout] test section_inserts_separator ... ok
[INFO] [stdout] test row_styles_cycle ... ok
[INFO] [stdout] test box_rounded_uses_rounded_corners ... ok
[INFO] [stdout] test padding_grid_with_explicit_padding_renders_spaced ... ok
[INFO] [stdout] test box_none_produces_no_border_chars ... ok
[INFO] [stdout] test show_header_false_omits_header ... ok
[INFO] [stdout] test add_row_auto_creates_columns ... ok
[INFO] [stdout] test add_section_before_any_rows_is_noop ... ok
[INFO] [stdout] test caption_appears_below_table ... ok
[INFO] [stdout] test box_heavy_uses_heavy_corners ... ok
[INFO] [stdout] test vertical_align_middle_does_not_panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 234 tests
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::expand (line 134) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::toggle (line 114) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::is_collapsed (line 174) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::indent (line 287) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::style (line 195) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::AccordionGroup::expand_item (line 460) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::title_style (line 216) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::collapse (line 154) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::new (line 66) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::AccordionGroup::expand_all (line 396) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::AccordionGroup (line 323) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::AccordionGroup::allow_multiple_open (line 376) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::collapsed (line 95) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::AccordionGroup::collapse_all (line 419) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::AccordionGroup::new (line 353) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion (line 21) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::icon_style (line 237) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::Accordion::icons (line 258) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::error (line 176) ... ok
[INFO] [stdout] test src/accordion.rs - accordion::AccordionGroup::push (line 442) ... ok
[INFO] [stdout] test src/badge.rs - badge (line 7) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::info (line 202) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::style (line 148) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::from_path (line 70) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::chevron (line 246) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge (line 100) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::active_style (line 169) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::new (line 130) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::rounded (line 235) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs (line 8) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::warning (line 189) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::icon (line 217) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::arrow (line 232) ... ok
[INFO] [stdout] test src/badge.rs - badge::Badge::success (line 163) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::items (line 288) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::len (line 260) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::separator_style (line 149) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::is_empty (line 274) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::new (line 92) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::separator (line 113) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs (line 41) ... ok
[INFO] [stdout] test src/color/accessibility.rs - color::accessibility (line 7) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::slash (line 218) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::pop (line 202) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::push (line 186) ... ok
[INFO] [stdout] test src/canvas.rs - canvas (line 9) ... ok
[INFO] [stdout] test src/breadcrumbs.rs - breadcrumbs::Breadcrumbs::style (line 130) ... ok
[INFO] [stdout] test src/console.rs - console::Console::begin_capture (line 1345) ... ok
[INFO] [stdout] test src/color/accessibility.rs - color::accessibility::contrast_ratio (line 43) ... ok
[INFO] [stdout] test src/console.rs - console::Console::export_text (line 1613) ... ok
[INFO] [stdout] test src/console.rs - console::Console::log (line 918) ... ok
[INFO] [stdout] test src/console.rs - console::Console::status (line 1132) - compile ... ok
[INFO] [stdout] test src/console.rs - console::Console::export_html (line 1656) ... ok
[INFO] [stdout] test src/console.rs - console::Console::new (line 515) ... ok
[INFO] [stdout] test src/console.rs - console::Console::print_json (line 1044) ... ok
[INFO] [stdout] test src/console.rs - console::Console::print_text (line 876) ... ok
[INFO] [stdout] test src/console.rs - console::Console::rule (line 974) ... ok
[INFO] [stdout] test src/console.rs - console::Console::builder (line 529) ... ok
[INFO] [stdout] test src/error/traceback.rs - error::traceback::Traceback::install_panic_hook (line 317) - compile ... ok
[INFO] [stdout] test src/console.rs - console::Console::export_svg (line 1733) ... ok
[INFO] [stdout] test src/console.rs - console::Console::measure (line 1093) ... ok
[INFO] [stdout] test src/error/traceback.rs - error::traceback::Traceback::install_panic_hook_with (line 331) - compile ... ok
[INFO] [stdout] test src/console.rs - console::Console::print (line 794) ... ok
[INFO] [stdout] test src/csv_table.rs - csv_table (line 10) ... ok
[INFO] [stdout] test src/console.rs - console::Console::render_str (line 750) ... ok
[INFO] [stdout] test src/console.rs - console::Console::render_buffer (line 1257) ... ok
[INFO] [stdout] test src/console.rs - console::Console::render (line 699) ... ok
[INFO] [stdout] test src/csv_table.rs - csv_table::CsvTable (line 135) ... ok
[INFO] [stdout] test src/diff.rs - diff (line 11) ... ok
[INFO] [stdout] test src/error/traceback.rs - error::traceback::Traceback::with_suppress (line 269) ... ok
[INFO] [stdout] test src/console.rs - console::ConsoleBuilder::build (line 376) ... ok
[INFO] [stdout] test src/lib.rs - (line 123) ... ok
[INFO] [stdout] test src/diff.rs - diff::Diff (line 231) ... ok
[INFO] [stdout] test src/lib.rs - (line 108) ... ok
[INFO] [stdout] test src/gradient.rs - gradient (line 9) ... ok
[INFO] [stdout] test src/figlet.rs - figlet::Figlet (line 298) ... ok
[INFO] [stdout] test src/lib.rs - (line 139) ... ok
[INFO] [stdout] test src/figlet.rs - figlet (line 8) ... ok
[INFO] [stdout] test src/lib.rs - (line 175) ... ok
[INFO] [stdout] test src/lib.rs - (line 342) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 332) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 207) ... ok
[INFO] [stdout] test src/lib.rs - (line 33) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 358) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 368) - compile ... ok
[INFO] [stdout] test src/json.rs - json (line 9) ... ok
[INFO] [stdout] test src/lib.rs - (line 232) ... ok
[INFO] [stdout] test src/lib.rs - (line 194) ... ok
[INFO] [stdout] test src/lib.rs - (line 159) ... ok
[INFO] [stdout] test src/lib.rs - (line 384) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 485) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 21) ... ok
[INFO] [stdout] test src/lib.rs - (line 515) ... ignored
[INFO] [stdout] test src/lib.rs - (line 573) ... ignored
[INFO] [stdout] test src/lib.rs - (line 581) ... ignored
[INFO] [stdout] test src/lib.rs - (line 590) ... ignored
[INFO] [stdout] test src/lib.rs - (line 221) ... ok
[INFO] [stdout] test src/lib.rs - (line 290) ... ok
[INFO] [stdout] test src/lib.rs - (line 259) ... ok
[INFO] [stdout] test src/lib.rs - (line 633) ... ok
[INFO] [stdout] test src/lib.rs - (line 614) ... ok
[INFO] [stdout] test src/lib.rs - (line 493) ... ok
[INFO] [stdout] test src/lib.rs - (line 441) ... ok
[INFO] [stdout] test src/lib.rs - (line 402) ... ok
[INFO] [stdout] test src/lib.rs - (line 414) ... ok
[INFO] [stdout] test src/lib.rs - (line 45) ... ok
[INFO] [stdout] test src/lib.rs - (line 454) ... ok
[INFO] [stdout] test src/lib.rs - (line 273) ... ok
[INFO] [stdout] test src/lib.rs - (line 248) ... ok
[INFO] [stdout] test src/lib.rs - (line 427) ... ok
[INFO] [stdout] test src/live/mod.rs - live::Live (line 67) - compile ... ok
[INFO] [stdout] test src/pager.rs - pager::Pager (line 31) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 321) ... ok
[INFO] [stdout] test src/lib.rs - (line 62) ... ok
[INFO] [stdout] test src/pager.rs - pager::Pager (line 38) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 307) ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::Progress (line 206) - compile ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::ProgressIteratorExt (line 892) - compile ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::Progress::open_file (line 556) - compile ... ok
[INFO] [stdout] test src/prompt.rs - prompt::MultiSelect (line 798) - compile ... ok
[INFO] [stdout] test src/prompt.rs - prompt::Prompt (line 85) - compile ... ok
[INFO] [stdout] test src/prompt.rs - prompt::Select (line 580) - compile ... ok
[INFO] [stdout] test src/prelude.rs - prelude (line 3) ... ok
[INFO] [stdout] test src/lib.rs - (line 79) ... ok
[INFO] [stdout] test src/lib.rs - (line 653) ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::track (line 864) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 467) ... ok
[INFO] [stdout] test src/lib.rs - (line 93) ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::ProgressReader (line 1007) ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::Progress::wrap_file (line 596) ... ok
[INFO] [stdout] test src/panel.rs - panel::Panel::new (line 80) ... ok
[INFO] [stdout] test src/lib.rs - (line 683) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::apply_style (line 246) ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::RenderableColumn (line 161) ... ok
[INFO] [stdout] test src/markup.rs - markup::escape (line 68) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::filter_control (line 295) ... ok
[INFO] [stdout] test src/panel.rs - panel::Panel (line 26) ... ok
[INFO] [stdout] test src/progress/core.rs - progress::core::Progress::track (line 514) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::cell_length (line 151) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::split_cells (line 182) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::get_shape (line 456) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::get_line_length (line 439) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::simplify (line 515) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::adjust_line_length (line 373) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::divide (line 599) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::new (line 85) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::split_and_crop_lines (line 746) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::split_lines (line 321) ... ok
[INFO] [stdout] test src/status/mod.rs - status (line 7) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::styled (line 129) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::split_lines_terminator (line 816) ... ok
[INFO] [stdout] test src/sparkline.rs - sparkline (line 9) ... ok
[INFO] [stdout] test src/status/spinner.rs - status::spinner::Spinner (line 38) ... ok
[INFO] [stdout] test src/segment.rs - segment::Segment::text (line 105) ... ok
[INFO] [stdout] test src/status/mod.rs - status::Status (line 161) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast (line 9) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::info (line 232) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::error (line 206) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::box_chars (line 332) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::icon (line 280) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::duration (line 262) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::show (line 448) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::success (line 193) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast (line 124) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::show_progress (line 298) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::new (line 172) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::width (line 315) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::toast_type (line 245) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::ToastManager::max_visible (line 540) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::warning (line 219) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::ToastManager::push (line 555) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::ToastManager::show_all (line 571) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::toast_error (line 647) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::ToastManager (line 504) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::toast_info (line 677) ... ok
[INFO] [stdout] test src/text/core.rs - text::core::Text (line 50) ... ok
[INFO] [stdout] test src/text/core.rs - text::core::Text::append_str (line 335) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::toast_warning (line 662) ... ok
[INFO] [stdout] test src/syntax.rs - syntax::unpack_padding (line 57) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::toast_success (line 632) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::ToastManager::clear (line 590) ... ok
[INFO] [stdout] test src/text/core.rs - text::core::Text::assemble (line 149) ... ok
[INFO] [stdout] test src/utils/file_proxy.rs - utils::file_proxy (line 19) ... ignored
[INFO] [stdout] test src/text/core.rs - text::core::Text::new (line 108) ... ok
[INFO] [stdout] test src/text/core.rs - text::core::Text::join (line 1000) ... ok
[INFO] [stdout] test src/text/core.rs - text::core::Text::stylize (line 399) ... ok
[INFO] [stdout] test src/text/core.rs - text::core::Text::markup (line 1383) ... ok
[INFO] [stdout] test src/utils/cells.rs - utils::cells::set_cell_size (line 63) ... ok
[INFO] [stdout] test src/text/core.rs - text::core::Text::highlight_regex (line 822) ... ok
[INFO] [stdout] test src/utils/pretty.rs - utils::pretty::Pretty::rebuild_json (line 197) ... ignored
[INFO] [stdout] test src/utils/cells.rs - utils::cells::cell_len (line 14) ... ok
[INFO] [stdout] test src/utils/control.rs - utils::control::strip_control_codes (line 59) ... ok
[INFO] [stdout] test src/utils/cells.rs - utils::cells::get_character_cell_size (line 40) ... ok
[INFO] [stdout] test src/utils/emoji.rs - utils::emoji::Emoji (line 38) ... ok
[INFO] [stdout] test src/utils/diagnose.rs - utils::diagnose (line 8) ... ok
[INFO] [stdout] test src/status/toast.rs - status::toast::Toast::show_blocking (line 468) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::as_renderable_mut (line 329) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::derive_gilt_cast (line 348) ... ignored
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::GiltCast (line 119) ... ok
[INFO] [stdout] test src/utils/cells.rs - utils::cells::is_single_cell_widths (line 168) ... ok
[INFO] [stdout] test src/utils/cells.rs - utils::cells::chop_cells (line 122) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol (line 24) ... ok
[INFO] [stdout] test src/utils/group.rs - utils::group::Group (line 32) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::as_renderable_ref (line 312) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::RenderableBox (line 244) ... ok
[INFO] [stdout] test src/utils/filesize.rs - utils::filesize::binary (line 204) ... ok
[INFO] [stdout] test src/utils/control.rs - utils::control::escape_control_codes (line 84) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::gilt_cast_impl (line 374) ... ok
[INFO] [stdout] test src/utils/filesize.rs - utils::filesize (line 8) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::RenderableExt (line 213) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::is_type (line 97) ... ok
[INFO] [stdout] test src/utils/filesize.rs - utils::filesize::decimal (line 178) ... ok
[INFO] [stdout] test src/utils/inspect.rs - utils::inspect (line 9) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::gilt_cast (line 70) ... ok
[INFO] [stdout] test src/utils/filesize.rs - utils::filesize::pick_unit_and_suffix (line 138) ... ok
[INFO] [stdout] test src/utils/protocol.rs - utils::protocol::IntoRenderable (line 173) ... ok
[INFO] [stdout] test src/utils/styled_str.rs - utils::styled_str::StyledStr (line 33) ... ok
[INFO] [stdout] test src/utils/styled_str.rs - utils::styled_str::Stylize (line 109) ... ok
[INFO] [stdout] test src/utils/styled_str.rs - utils::styled_str::Stylize::try_bg (line 331) ... ok
[INFO] [stdout] test src/utils/styled_str.rs - utils::styled_str (line 10) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table::add_row_renderable (line 534) ... ok
[INFO] [stdout] test src/utils/styled_str.rs - utils::styled_str::Stylize::try_attr (line 350) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table::add_section (line 603) ... ok
[INFO] [stdout] test src/utils/styled_str.rs - utils::styled_str::Stylize::try_styled (line 294) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table::add_column (line 429) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table::add_row (line 472) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table::grid (line 149) ... ok
[INFO] [stdout] test src/utils/styled_str.rs - utils::styled_str::Stylize::try_fg (line 312) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table::add_row_text (line 500) ... ok
[INFO] [stdout] test src/widgets/table/mod.rs - widgets::table (line 6) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table (line 27) ... ok
[INFO] [stdout] test src/widgets/table/core.rs - widgets::table::core::Table::new (line 101) ... ok
[INFO] [stdout] test src/wrap.rs - wrap::divide_line (line 80) ... ok
[INFO] [stdout] test src/wrap.rs - wrap::words (line 25) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 227 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 27.02s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "4d32f49f9330b6aa900caa9c947e359f3b7b79d3cd43e9a86c928107986fe979", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4d32f49f9330b6aa900caa9c947e359f3b7b79d3cd43e9a86c928107986fe979", kill_on_drop: false }`
[INFO] [stdout] 4d32f49f9330b6aa900caa9c947e359f3b7b79d3cd43e9a86c928107986fe979
